FC2カウンター FPGAの部屋 2007年09月
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

カテゴリの目次作成が終了した

カテゴリの目次作成が終了した。とりあえず一区切り。
さて、次は何をやろうかな?

とりあえず、ET2007に行ってみることにした。木曜日しか行けないのでエントリしました。
FPGAトラックはすべて聴講にチェックしましたが、それだと展示場を見る時間がないような気が???
  1. 2007年09月29日 18:31 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

”FPGAリテラシーおよびチュートリアル”の目次

やはり、ブログなので、新しい順に記事が並んでしまう。
そこで、FPGAリテラシーおよびチュートリアル・カテゴリの主なコンテンツの目次を作ることにした。
FPGAリテラシーおよびチュートリアルはISE8.1iだが、今のISE9.2iと大体同じなので使えると思う。(iMPACTの統合などの細かい違いはあるのだが。。。)
結構、このチュートリアルシリーズ使えると自分では思っています。特にシミュレーション編などはお気に入りです。サンプルプロジェクトを用意して、図を豊富に使って、丁寧に説明していると思っています。

スパルタン3スタータキットでのISE8.1iのチュートリアル1(導入編)

スパルタン3スタータキットでのISE8.1iのチュートリアル2(プロジェクト作成)
スパルタン3スタータキットでのISE8.1iのチュートリアル3(シミュレーション準備編)
スパルタン3スタータキットでのISE8.1iのチュートリアル4(シミュレーション編)
スパルタン3スタータキットでのISE8.1iのチュートリアル5(インプリメンテーション編)
スパルタン3スタータキットでのISE8.1iのチュートリアル6(インプリメンテーション編続き)
スパルタン3スタータキットでのISE8.1iのチュートリアル7(コンフィギュレーション編)
スパルタン3スタータキットでのISE8.1iのチュートリアル8(コンフィギュレーション編続き)
シリアルインターフェース(RS-232C)の説明

その他のこのカテゴリの記事

7セグメントLEDを何個ダイナミック点灯できるか?(7セグメントLEDを何個ダイナミック点灯できるかを実際にプロジェクトを作ってやってみた。自分的には限界は8個くらいかな?以前からどのくらい大丈夫なのか疑問だったのだ)
7セグメントLEDを何個ダイナミック点灯できるか?2(スパルタン3スタータキット用のプロジェクトをダウンロードして試せます(リンクがわかりにくいので注意)。電圧波形をオシロで測定しました)
スイッチのチャタリング(スイッチのチャタリングをスパルタン3スタータキットで実際に確かめてみた。スパルタン3スタータキット用のプロジェクトをダウンロードして試せます(リンクがわかりにくいので注意))
  1. 2007年09月29日 05:48 |
  2. カテゴリ別の目次
  3. | トラックバック:1
  4. | コメント:0

”プリント板の作成過程”の目次

このカテゴリを見直してみて、いろいろな人のアドバイスに助けられているということを痛感した。皆様本当にありがとうございます。

ボード作製初期のデバック(前に作った基板の作成過程)
プリント基板の設計(Virtex2proのRocketIOやDDR SDRAMを使うと、電源が沢山必要になるという話題)
Virtex2proの3.3VのIO電圧(見たマニュアルが古いためにあたふたしてしまった。教訓:日本語のマニュアルだけでは危ない。必ず英語版も見ること。)
回路図入力大詰め
近頃のお仕事(最近のお仕事は基板の回路図のネットリストを元に回路図の間違い探しという、面白くも無い大変なお仕事)
基板設計(基板やさんに、いろいろお願いしたこと)
クロックの信号品質(FPGAに水晶発信器からクロックを入力して、そのクロックをFPGAのほかのピンから出力してSDRAM4個とPowerPCにクロックを供給している。クロック周波数は133MHzだ)
高速?(133MHz)クロックの配線について(FPGAから外部デバイスへのクロックを接続するためのトポロジを図を描いて検討した。出力が1本にすると反射やドライブ能力の点でだめ。結局、PPC、SDRAM2こずつに分けた。皆様貴重なご意見ありがとうございます)
伝送線路シミュレーションの解析に苦戦中(伝送線路シミュレータの出力波形が乱れているので、どうしたものか悩んでいる)
プリント基板のデータバスの信号品質(今度はSDRAMからの出力信号も信号の変化点で乱れるようになってしまった。基板を作るのも大変ですね)
SDRAM動作不良(どうやら、SDRAMの根本かダンピング抵抗当たりでとなりのデータビットとショートしているようだ)
続:SDRAM動作不良(送って調べてもらったところダンピング抵抗用の抵抗アレイで隣同士がショートしていた。半田付けの不良も注意しなければ、20枚中2枚ショートしていた)
うちのボードのリセット回路とFPGAのコンフィギュレーション(うちのボードのリセット回路とFPGAのコンフィギュレーションの状況をブロック図を用いて詳述した)
  1. 2007年09月29日 05:35 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”StateCADの使い方”の目次

StateCADの使い方1(StateCADの立ち上げ方とステートの配置、遷移を表す→を入力、リセット時の動作を入力)
StateCADの使い方2(ステートの名前とステートでの出力を入力、→の遷移条件を入力、Random Logicボタンでアップ・カウンタを記述、メニューの"Options"から"Configuration..."を選択してConfigurationを変更)
StateCADの使い方3(ステートの色の変え方を説明)
  1. 2007年09月28日 19:02 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”Spartan3E Starter Kit”の目次

Spartan3E Starter Kitは、DDR SDRAM コントローラを作りたいがために、最初に出力のためのLCDの表示回路を作成、次にデータを入力するためにロータリーエンコーダー回路を作成して、最後にDDR SDRAM コントローラを作って、ロータリーエンコーダー回路、LCDの表示回路に接続してテストした。
いまややりたいと思っているのはSPIコンフィグのテストです。

Spartan3E Starter KitのLCD(Spartan3E Starter KitのLCDをXilinxのプロセッサIP、PicoBlazeを使用して表示してみることにした)
Spartan3E Starter KitのLCD2(Spartan3E Starter KitのLCDの使い方をSpartan3E Starter Kitの初めからコンフィグROMに入っているプロジェクトs3esk_startupのマニュアルを見てお勉強した)
スパルタン3EスターターキットのLCD表示回路1(スパルタン3EスターターキットのLCD表示回路を作っているところだ。 LCDの上の列と下の列に右端から4つの16進数を表示する回路だ。ステートマシンを図示)
スパルタン3EスターターキットのLCD表示回路2(PicoBlazeの入出力ポートの仕様)
スパルタン3EスターターキットのLCD表示回路3(LCD表示回路も大分できて来た。アセンブラも書いて、シミュレーションをしてみた。シミュレーション波形を表示)
スパルタン3EスターターキットのLCD表示回路4(結構PicoBlazeのアセンブラにバグがありましたが、LCDに表示できるようになりました)
スパルタン3EスターターキットのLCD表示回路5(試せる様にスパルタン3EスターターキットのLCD表示回路のプロジェクトあり。足りないファイルを付加して、プロジェクトをインプリメントする方法)
スパルタン3EスターターキットのLCD表示回路まとめ(仕様を示した。スパルタン3EスタータキットのLCDの初期化方法。PicoBlaze用の入出力ポートの仕様。PicoBlazeのプログラムの説明)
スパルタン3EスターターキットのLCD表示回路その後(スタータキットのユーザーズマニュアルに書いてあるLCD操作タイミングとST7066Uのタイミングが違うのではないかというコメントをSimさんからいただいた。
確かにスタータキットのユーザーズマニュアルを見るとST7066Uを使っていると書いてある。ためしにST7066Uをターゲットにタイミングを書き換えてみた)

スパルタン3Eスタータキットのロータリーエンコーダ1(スパルタン3Eのロータリーエンコーダの回路ができた。ロータリーエンコーダの回路の仕様を説明)
スパルタン3Eスタータキットのロータリーエンコーダ2(スパルタン3Eスタータキットのロータリーエンコーダの回路の説明。スパルタン3Eスターターキットのロータリーエンコーダの回路のプロジェクトあり。)

Spartan3E Starter KitでのDDR SDRAMコントローラのテスト(Spartan3E Starter KitでDDR SDRAMコントローラを作成中。トップのDDRtest.vhdのport map)
DDR SDRAMコントローラ回路の途中経過(DDR SDRAMコントローラ回路は、以前Virtex2で作ってあったものをSpartan3Eに変更しているので、Spartan3Eには存在しないプリミティブを使用していた。Spartan3EではDCMの可変位相シフトが変更になった件)
Spartan3E Starter KitのDDR SDRAMコントローラについての疑問(Spartan3E Starter KitのDDR SDRAMコントローラがISEでインプリメントできるところまで来たが、どうしてもMAPでエラーが出てしまう。Spartan3ではインプリメントできたが、Spartan3Eでインプリメントできない)
Spartan3E Starter KitのDDR SDRAMコントローラについての疑問2(Spartan3Eのライブラリの説明書にFDDRCPE(ASYNC set/reset)とFDDRRSE(SYNC set/reset)がないことがわかった。ODDR2を使ってgeneric mapでSYNCとASYNCを切り替えるのだそうだ。さらに入力もIDDR2があるようなのでこれを使うことにした。 これでも最初と同様にエラーが出てしまった)
Spratan3E Starter KitのDDR SDRAMコントローラまとめ(Spratan3E Starter KitのDDR SDRAMコントローラがとりあえず動いてきた。Spartan3EでもFDDRCPE,FDDRRSEも使用できた。ODDR2でもどっちでも良いようだが、Internal Errorの危険があるので、今のところFDDRCPE,FDDRRSEを使うことにした。DDR SDRAMコントローラのタイミングチャートあり。IOB内のIFD_DELAYを使用して、DDRデータをちょうど良いところまで遅延して、FPGA内のクロックで受けることにした)
Spratan3E Starter KitのDDR SDRAMコントローラまとめ2(DDR SDRAMの論理シミュレーション波形から動作を説明している)
Spratan3E Starter KitのDDR SDRAMコントローラまとめ3(”Spratan3E Starter KitのDDR SDRAMコントローラまとめ”を良く見てみると、リード時のデータを3/4クロックずらすより、1/4クロックずらせて立下りエッジからデータをサンプルした方が受けられるIFD_DELAY_VALUEの値の幅が広くてよいと思った。シミュレーション波形で説明)
Spratan3E Starter KitのDDR SDRAMコントローラ(プロジェクト)(Spratan3E Starter KitのDDR SDRAMコントローラのプロジェクト(VHDL)あり。DDR SDRAMコントローラの中のcontrollerはNGCファイルである。(つまりソースはない))
Spratan3E Starter KitのDDR SDRAMコントローラの説明(Spratan3E Starter KitのDDR SDRAMコントローラの仕様の説明。シミュレーション波形で説明)
Verilog2001版DDR SDRAMコントローラーのインプリメント(Verilog2001版DDR SDRAMコントローラーのインプリメントの仕方をキャプチャ図を使って詳しく説明。プロジェクトを作って、VHDLファイルを追加するところまで)
Verilog2001版DDR SDRAMコントローラーのインプリメント2(Verilog2001版DDR SDRAMコントローラーのインプリメントの続き。使い方を説明)
  1. 2007年09月28日 18:43 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”Virtex4のお勉強”の目次

Virtex4の入力用DDRレジスタ(IDDR)1(Virtex4のお勉強をするに当たって入力用DDRレジスタ(IDDR)からやってみたいと思う。IDDRをみると、3つのモードがあるようだ。そのうちのOPPOSITE_EDGEモードからやってみようと思う。FPGA Editorで確認。シミュレーション波形を確認。Timing Analyzerでセットアップ時間を確認。Virtex2の入力DDRと同じ波形)
Virtex4の入力用DDRレジスタ(IDDR)2(今度はIDDRをSAME_EDGEモードにしてみた。FPGA Editorで確認。シミュレーション波形を確認。クロックの立ち上がりで出力が変化するようになった)
Virtex4の入力用DDRレジスタ(IDDR)3(今度はIDDRをSAME_EDGE_PIPELINEDモードにしてみた。FPGA Editorで確認。シミュレーション波形を確認。更にFFが入って遅れたが、立ち上がりエッジでサンプルされたデータがq1に、次の立下りエッジでサンプルされたデータがq2に整列されて出力されるようになった)
Virtex4のIDELAY(FIXEDモード)(Virtex4のIDELAYのお勉強をしようとおもう。IDELAYはILOGICブロック(IOブロック)のプログラマブル遅延エレメントで0から63までの遅延タップがある。 固定遅延モード(FIXEDモード)をやってみた。FPGA Editorで確認。Timing Analyzerでタップの遅延時間を確認した)
Virtex4のIDELAY(VARIABLEモード)(Virtex4のIDELAY(VARIABLEモード)についてお勉強した。今度はCEとINCがあるので外部ポートから入力することにした。CEが1でINCが1の時に遅延が増えて、CEが1でINCが0の時に遅延が減る。2クロックに1回増減するようだ。FPGA Editorで確認。シミュレーション波形を確認。Timing Analyzerでセットアップ時間を確認。CEの値によって、遅延が増減する。全ソースも表示)
Virtex4のリージョナルバッファ(BUFIO、BUFR)(Virtex4のリージョナルバッファのBUFIO、BUFRをテスト。リージョナルバッファは部分的な領域のクロックバッファのようなものだ。部分的なクロック領域はVitex2シリーズとは違ってCLB16個(IOB32個分)の高さ、チップの1/2の幅に固定されているそうです。ソースを表示。PACEで配置を決定。BUFRを使用してインプリメント。FPGA EdirotでVirtex2にインプリメントと比較。Timing Analyzerで遅延を見てみた。最後にBUFIO,BUFRの部分をFPGA Editorで見てみた)
Virtex4のFIFO(FWFTモード)(Virtex4のFIFOのFWFT(First Word Fall Through)モードについて考察した。FWFTモードはemptyが0になった時にdo(data out)に最初のデータが出ているモードだ。FPGA Editorで見るとVirtex4ではFIFO16というプリミティブが入っていた。シミュレーション波形を確認した。コアジェネレータのFIFOジェネレータでもFWFTモードを指定できることがわかった)
Virtex4のISERDESのお勉強(Virtex4のISERDESのお勉強をしてみたが今のところTranslateで原因不明で止まってしまっている。OSERDESの方を先にやってみることにする。)
Virtex4のOSERDESのお勉強(今度はVirtex4のOSERDESをインスタンスしてみたがやはりISERDESと同じだった。やはりTranslateで原因不明で停止してしまう)
ISERDES,OSERDESのその後(ISERDES,OSERDESはこの前のファイルではうまく行っていないが、面白いことがわかった。もうすでに皆さんご存知かもしれないが、 Virtex4の入力用DDRレジスタが入っているILOGIC、出力用DDRレジスタが入っているOLOGICはそのままISERDES, OSERDESのようだ。FPGA Editorで確認)
ISERDESのお勉強の続き1(DDR2-SDRAMを使うために、もう一度ISERDESのお勉強。ユーザーズマニュアルのサンプルをインプリしてみたが、うまくいかない。自分で修正したところうまくインプリできた。ついでに新しいTiming Analyzerの使い方)
ISERDESのお勉強の続き2(ISERDESのお勉強の続き1の続き。Floorplan Editorを立ち上げ、配線や配線遅延を確認する。任意パス間の遅延を見る機能で、clk_inとDinの遅延の差を解析)
  1. 2007年09月27日 20:54 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”PSoC”の目次

PSoC、興味はすごくあるんだけど、やりたいことが見つからないといった状況です。

PSoCを試してみようと思った(アナログもプログラミングできるPSoCを試してみようと思った)
PSoCのデモボードを買ってみた(旧バージョンのMINIPROG1+Designer4.0限定版コンパイラセット(PS-MINIPROG1-C)をパステルマジックで買いました)
PSoCのデモボードが一応動いた(この前パステルマジックから購入したMiniProg1を動かしてみた。課題はセクション1のLEDの点滅。1HzでLED4をデューティ25%、LED1をデューティ50%で駆動する。PSoCのディジタルブロックを使ってPWMで波形を出力する)
サイプレスPSoC Expressセミナー(サイプレスPSoC Expressセミナーを申し込んだ)
サイプレス PSoC Express セミナー 2007(サイプレス PSoC Express セミナー 2007に行ってきた。PSoCの概要やPSoC Expressの使い方について説明を受けた。次にもらったボードを使った演習をした。ノートパソコンを持っていったので、PSoC Expressを立ち上げてサンプルを4つやった。 )
  1. 2007年09月27日 18:29 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”FPGAからクロック出力”の目次

FPGAから供給するクロックの位相(FPGAから外のデバイス(プロセッサやSDRAM)へ供給するクロックの位相がずれてしまう理由の概要を説明。ブロック図あり)
FPGAから供給するクロックの位相2(FPGAから外のデバイス(プロセッサやSDRAM)へ供給するクロックの位相のずれを実測値を測定した。この実測値は外部出力するクロックをFPGA Editorのプローブを使ってテストポイントにまわしたものなので、テストポイントにまわすまでのFPGAの配線遅延を含んでいる。クロック出力からテストポイントまでの遅延を実測値で補正した)
FPGA出力クロックの解析(FPGAから供給するクロックの位相2での実測値と、タイミングアナライザから計算した遅延に実力係数をかけたものを比較したらあわなかった)
FPGAから他のデバイスへクロック供給(今までのように外部フィードバックをするとDCMへのクロック入力遅延とフィードバック入力遅延が合わずにFPGA外部に出力するクロックの位相が入力クロックと合わずに困ることがあったので、FPGA内部フィードバックにすることにした)
外部フィードバックを使用しないFPGAからのクロック出力(FPGAから外のデバイス(プロセッサやSDRAM)へ供給するクロックをFPGA内部フィードバックにしたときの実測値とタイミングアナライザからの計算値を比較したら、大体一致した。この方式に決定した。
結局、FPGAのクロック出力するときに外部フィードバックを使用して位相を合わせる方式は、FPGA内のクロック入力パスとフィードバック入力パスのDCMまでの遅延を合わせこむのが難しいので、FPGA内部フィードバックの方が楽だという結論に達した)
  1. 2007年09月27日 05:52 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”Xilinx ISEについて”の目次

"Multi Pass Place & Route"の使用方法(コンパイルすると動作周波数が66MHzを下回ってしまった。もう一度"Floorplannerの使い方覚書3"の方法でクリティカルパスを短くしても良かったが、今回はMulti Pass Place & Routeで問題を解決してみることにした。Multi Pass Place & Routeのやり方を解説)
ISEのProperty display levelについて(XilinxのFPGA用のツールISEにはProperty display levelがある。ディフォルトではStandardになっているが、Advancedに設定すると設定できる項目が増える)
ISE7.1iのアドバンテージ(ISE7.1iから、ISEでテストベンチを生成する際に元のVHDLファイルのport宣言に日本語があっても大丈夫になった)
ISE8.1iのエディタで日本語を表示する方法(ISE8.1iのエディタで日本語を表示する方法。本当にISE8.1iはバグバグで困った)
ISE6.3iからISE8.1iへの移行(ISE6.3iからISE8.1iへの移行しようとしているが、どうもおかしいということ。ISE8.1iはバグバグ)
ISE8.1iSP3の不便なところ(1つは日本語を使っていると時々化けていること。ISE8.1iではプロジェクトをフォルダごとコピーして違う名前をつけても元のソースファイルへのパスを張ってしまう)
ISE8.2iをインストールしました
お手軽にISEでSynplifyを使う上での注意点(Synplify用の制約ファイル(.sdc)を書かないでデフォルトのまま使う)
ISE8.2iの日本語表示はまだあやしい(ISE8.2iもバグバグ)
ISEのプロパティを変更してFPGAの性能を変える(XST, MAP, P&Rのプロパティを変更して、ISEにがんばってもらう設定にすると性能が上がる。ただし、インプリメントする時間は増える)
Partitionの設定(パーティションの設定方法と性能比較)
ISE9.1i
Xilinx ISE WebPACK 9.1iSP1
Verilog2001版DDR SDRAMコントローラーのISE9.1iSP1によるインプリメント(Verilog2001版DDR SDRAMコントローラーがISE9.1iSP1で動かなかったことのトラブルシュート記。iMPACTを立ち上げて最初の一回目がおかしいようだ。やり直せば問題ないということになった)
  1. 2007年09月26日 21:53 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”CADツール”の目次

Kicad(アイン1977さんの2006年11月26日付けのブログKicadでKicadを知った。Eagleみたいな回路図CAD+基板CADらしい。)
  1. 2007年09月26日 19:42 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”QuartusⅡ”の目次

このブログでは、あまりアルテラのことは記事になっていないが、QuartusⅡを使ったことはあるし、MAX+PLUS2は昔、よく使っていた。

QuartusⅡでのピン割り当ての見方
  1. 2007年09月26日 19:40 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”Virtex5のお勉強”の目次

Virtex5のお勉強(Virtex5を勉強してみようと思い立った)
Virtex5のお勉強(PLLのテスト)(Virtex5のPLLをテストした。Coregenのウィザートで生成。インプリメントして、Timing Analyzerで静的タイミング解析を行った)
Virtex5のお勉強(PLLのテスト2)(Virtex5のPLLをシミュレーションしてみた。ModelSimとVeritakでシミュレーション。ModelSimの波形がおかしかったのだが、理由はライブラリが古かったためでした。新しいデバイスを使うときは、特にModelSimのライブラリも最新にしておきましょう)
Virtex5, Virtex4, Spartan3Eのインプリメント結果(Virtex5, Virtex4, Spartan3EのDDR SDRAMコントローラのインプリメント(MAP)結果を比較してみた。Virtex5は4入力LUTから6入力LUTに変更されているので、LUT数が減っているようだ)
Virtex5, Virtex4, Spartan3Eのインプリメント結果2(分散RAM)(Virtex5, Virtex4, Spartan3Eの分散RAMのインプリメントの様子をFPGA Editorで比較した)
Virtex5, Virtex4, Spartan3Eのインプリメント結果3(SLICEL)(Virtex5, Virtex4, Spartan3Eのロジックとして使用したLUT(LookUp Table)を比較した。SLICELというスライスの違いをFPGA Editorで比較した)
Virtex5, Virtex4, Spartan3Eのインプリメント結果4(IOBの違い)(Virtex5, Virtex4, Spartan3EのIOBのインプリメントの違いをFPGA Editorで比較した)
  1. 2007年09月26日 19:35 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

ブログのカテゴリの目次

今、ブログのカテゴリ目次を書いています。
やはり、ブログは新しい記事から、並んでしまうので自分でも読みにくいと思っています。
今は、今まで自分が、どんなことをやってきたかを、検索して見つけていますが、だんだんそれでは見つからなくなってきました。
Webページに移行すればいいのでしょうが、現在のブログという手段が気に入っているので、なんとか探しやすくしようと思い、カテゴリの目次というカテゴリを一番最初に追加しました。
今のところ、ブログの下から順に短いコメントを添えて、やってきた経過がわかるようにリンクを古い順に並べています。
自分でも今までやってきたことを見つめなおす機会を持ってて、良かったと思っています。
その他のFPGAの話題と日記は取り止めがないので、目次は作りません。
目次を作ったカテゴリに記事を追加した場合には、目次にもリンクを追加して行こうと思います。
  1. 2007年09月25日 22:46 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

”VGAコントローラ”の目次

Spartan3E Starter KitのVGAコントローラの仕様1(Spartan3E Starter KitのビットマップVGAコントローラ(800×600で72Hz)をVerilogで書こうと仕様を策定した)
VGAコントローラの仕様の一部(ビットマップVGAコントローラの仕様を考えている。ビットマップVGAコントローラの作成は中断中)
キャラクタ・ディスプレイ・コントローラ(キャラクタ・ディスプレイ・コントローラ(80×60文字)を作成。キャラクタROMの作成方法)
キャラクタ・ディスプレイ・コントローラの構成(キャラクタ・ディスプレイ・コントローラの構成を簡単なブロック図で説明)
キャラクタ・ディスプレイ・コントローラのその後(キャラクタ・ディスプレイ・コントローラのキャラクタROMにアルファベット小文字、=、;、:などを追加した)
キャラクタ・ディスプレイ・コントローラの詳しい説明(キャラクタ・ディスプレイ・コントローラはVHDLをVerilog2001に変更中。もう一度キャラクタ・ディスプレイ・コントローラの原理について詳しく図入りで説明)
キャラクタ・ディスプレイ・コントローラのまとめ(Verilog2001版キャラクタ・ディスプレイ・コントローラが出来上がった。スパルタン3スタータキット用のプロジェクトもダウンロード可能。キャラクタ・ディスプレイ・コントローラの本体の使用法について解説)

その他のカテゴリでの”VGAコントローラ"の記事
キャラクタ・ディスプレイ・コントローラのシミュレーション(Verilog で作られたキャラクタ・ディスプレイ・コントローラの表示文字をシミュレーションによって確認する方法)
  1. 2007年09月25日 22:36 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”Chipscope”の目次

なお、ChipScope Proの基本的な使い方に関しては、fpga-lab.orgさんの”ChipScope™ Proの使い方”に詳しく書かれていますので、そちらを参照されると良いと思います。

Chipscopeについて(Chipscopeの概要について)
Chipscope7.1iの使用法について(Chipscope7.1は何かおかしいという記事。ちなみにChipscope9.1は問題ない)
Chipscopeのクロックの配置について(ChipscopeもFPGAの回路の一部なので、BUFGMUXを十分に使わせてあげないと、動作がおかしくなる。それを回避する方法。キャプチャ図解説付き)
Chipscopeの観測する信号をつなぎ直す(Chipscopeは非常に便利なツールだが通常は少なくともネットリストにChipscope回路を付加するので再度インプリメントしなくてはならない。FPGA Editorでお手軽につなぎなおす方法を解説。キャプチャ図解説付き)
ChipscopeのXカーソル、Oカーソルの移動(こんなことも知らなくてお恥ずかしいが。。。ChipscopeのXカーソル、Oカーソルの移動方法を解説。キャプチャ図解説付き)
ChipScopeの波形保存とModelSimでの表示方法(ChipScopeでVCDで保存した波形をvcd2wlf.exe でwlfファイルに変換してModelSimで表示する方法。キャプチャ図解説付き)

ほかのカテゴリでのChipscopeの記事
あるパソコンでのPCIマスタアクセス波形(XeonプロセッサのパソコンのPCI66MHz,64bitボードからパソコンのメモリへPCIマスタリードしたときのChipscope波形。ChipScopeで信号をまとめてバスとして表示する方法)
  1. 2007年09月24日 18:41 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”UCFの書き方”の目次

UCFの書きかた1(入出力ピンの位置を指定、入出力バッファのスルーレート、IO入出力レベルの制約)
UCFの書き方2(クロック制約、IOのセットアップ時間、IIOのクロックからの出力時間の制約)
UCFの書き方3(受け渡すクロックの間の依存関係は無視するという制約)
UCFの書き方4(IOBDELAY制約)
UCFの書き方5(CLK_DV_FFとTO_CLK_DV_DATA間の制約を無視する制約、MAXDELAY制約)
IOBの入力用FFを活用する(XilinxのFPGAのIOBにビルトインされているIOBの入力用FFを確実に使う方法)
Constrains Editor(Constrains Editorの簡単な使用方法)
UCF設定での失敗例(出力のスルーレートと出力電流にも注意しましょう。違っていると出力遅延も違っています)
VALID制約(データが有効な時間の制約)
  1. 2007年09月24日 18:27 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”Floorplannerの使い方”の目次

Floorplannerの使い方覚書1(Timinig Analyzerを起動し、Floorplanner for crossprobingを選択し、Floorplannerを起動。クリティカルパスの中の一番遅延の大きいネットをFloorplannerで観察する。Replace All with placementを選ぶと、UCF Flowの方に前にPlace & Routeした配置をコピーして、自由に移動。キャプチャ図を使って説明)
Floorplannerの使い方覚書2(回路ブロックごとにエリアを制約するやり方。制約のUCFファイルを紹介。キャプチャ図を使って説明)
Floorplannerの使い方覚書3(クリティカルパスだけUCFとFNFにコピーして、修正する方法。キャプチャ図を使って説明)
  1. 2007年09月24日 05:42 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”シミュレーション”の目次

Webpack ISEとModelSimのインストールマニュアル(Webpack ISEとModelSimのインストールマニュアルを作った。どっちもWebpack6.3i用で古いです)
論理シミュレーション時のバグ(デルタ遅延があるので、モデルからの出力は遅延しておいたほうが良い)
Xilinx 社製FPGA を搭載したPCI ボードのシミュレーション1(Xilinx のツールISE6.1i に統合されているHDL Bencher を使用したSDRAM制御回路の回路検証例)
Xilinx 社製FPGA を搭載したPCI ボードのシミュレーション2(シミュレーションモデルを使用した全体のシミュレーション)
コアジェネレータIP使用時のVHDLのModelSimシミュレーション(コアジェネレータIP使用時にデフォルトでは、シミュレーションモデルがVerilogになっているので、VHDLに変更する必要がある)
ModelSimでの全体シミュレーション(うちのボードのSDR SDRAM, PowerPCのシミュレーション波形)
DDR SDRAMシミュレーションモデル(フリーのDDR SDRAMのシミュレーションモデルを置いてあるサイト)
DDR SDRAMコントローラのシミュレーション(FMFライブラリを作る)(Free Model FoundryのMT46V16M16のVHDLで書かれたシミュレーションモデルを使用してDDR SDRAMコントローラのシミュレーションをする。最初にライブラリをコンパイルする。キャプチャ図入りで説明)
DDR SDRAMコントローラのシミュレーション1(コンパイルスクリプト)(続き、プロジェクトを作成、コンパイルスクリプト(compile.do)を作って、コンパイルするまでの手順を示す。キャプチャ図入りで説明)
DDR SDRAMコントローラのシミュレーション2(シミュレーションスクリプト)(続き、Start Simulationしてシミュレーションしてみよう。ModelSimのGUIを使いながら、それを参考にして便利なDOファイルを作っていく。シミュレーション波形を確認する。キャプチャ図入りで説明)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーションまとめ1(コンパイルまでのやり方をキャプチャ図入りで説明)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーションまとめ2(Simulate、wave波形表示、特にVerilogを使用したときのステートマシンのステートの表示方法を解説)
Verilog2001版DDR SDRAMコントローラのバグ(最初のバグは、ontroller.v 724行目のendcaseの後に ; を入れてしまったことだ。もう1つは write_data_module.v でグローバル変数 j を定義してその j を2つのalways @* 内で使用してしまったのでレース状態が発生してしまったらしい。)
Verilogシミュレータ (Veritak)(Veritakシミュレータの紹介。ModelSim XE Starter で1万行を超えるシミュレーションはVeritakの方が大幅に速い)
Veritak-Basic Version 3.30A(Veritakの新しいバージョン、Veritak-Basic Version 3.30A(シェアウェア版)がVeritakのWebページに出ていることを教えてもらったので、早速ダウンロードしてインストール)
ISEのTest Bench Waveformでの複数クロックを使用するISEシミュレーション(SEでTest Bench Waveformをウイザードで生成する際に、複数のクロックを使用したい場合があるが、ISE9.1iではMultiple Clocksを使用出来るので、それを使用してISEシミュレーションをしてみた。 )
PCIバスなどのシミュレーション(VHDL)(サスティンド・トライステートのシミュレーションでの表現方法)
VHDLの共有変数を使用したシミュレーション(VHDLの共有変数を使ってテストベンチで下の階層の信号を見る)
キャラクタ・ディスプレイ・コントローラのシミュレーション(Verilog で作られたキャラクタ・ディスプレイ・コントローラの表示文字をシミュレーションによって確認する方法)
キャラクタ・ディスプレイ・コントローラのシミュレーション(VHDL)(キャラクタ・ディスプレイ・コントローラの表示文字をシミュレーションによって確認する方法、VHDL版。こちらはPS/2キーボード・インターフェース回路とつながっている)
キャラクタ・ディスプレイ・コントローラのシミュレーション(Verilog, ModelSim編)(Verilog版のキャラクタ・ディスプレイ・コントローラのシミュレーションをModelSimでやってみた)
  1. 2007年09月24日 05:26 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”PCIからHyperTransportまで ボード上の高速接続のトレンド”記事を読んで

日経エレクトロニクス2007 9-24 No.961 の日経ボード情報 No.43 に載っていた”PCIからHyperTransportまで ボード上の高速接続のトレンド”記事を読んだ。
感想はPCI-Xのことは良く知らないじゃないかということだ。それとも私のほうが、新しいPCI-X規格を知らないのだろうか?

1. 19ページ目右側で”100MHz/133MHz(PCI-X)”とあるが、66MHzのPCI-X規格もあったはず。
2. 21ページ目の注4も微妙におかしい。32ビット幅のPCI-Xバス規格がない様な感じで書いてある。
3. 22ページ目左側に、”PCI-Xでは FSTOROBE/SSTOROBE という信号が追加される”という記述があったが、いつ、FSTOROBE/SSTOROBE という信号が追加されたのだろうか? 私のPCI-Xバス・モジュールではFSTOROBE/SSTOROBE という信号はサポートしていないが、正常に動作するようだ。
4. 27ページ目で右側で、”SRAMベースのFPGAの場合は、PCI Expressの物理層が満たすべき、電源投入時の動作などを満たせない”とあるが、Virtex-5LXTなども満たせないのだろうか?(8ビットでコンフィギュレーションしてもだめ?)


何か、PCI-Xの部分は怪しい気がするのは気のせいだろうか?

注:””の中の文は、原文どおりではありません。
  1. 2007年09月23日 13:03 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

”PCI”の目次

PCIはPCI機能の説明と、PCI-Xモジュールの製作過程に分かれる。

PCI
PCIモジュール1(うちの基板のコンフィギュレーション・レジスタ・マップ、PCIのコンフィギュレーション方法を紹介)
PCIモジュール2(PCIターゲットアクセスについて。ステート図、シミュレーションのwave付き)
PCIモジュール3(PCIマスタアクセスについて、ステートマシンは載せていないが、IOB付近のデータパスの図を添付)
PCIボードの起動時間(FPGAのコンフィギュレーション時間とPCIボードの起動時間について考察)
あるパソコンでのPCIマスタアクセス波形(XeonプロセッサのパソコンのPCI66MHz,64bitボードからパソコンのメモリへPCIマスタリードしたときのChipscope波形。PCIリードを何回か繰り返した後リードできている。Chipscopeで信号をまとめてバスとして16進で表示する方法)

PCI-X
PCI-Xモジュールについて(PCI-Xについて、いろいろ考えている)
PCI-Xバス・モジュール(コンフィグレーション・アクセスとメモリ・リード、メモリ・ライトにDWORDアクセスで応答するPCI-Xターゲット・モジュールができた)
PCI-Xターゲット・モジュールのシミュレーション(PCI-Xのコンフィギュレーション・アクセスのReadとWriteの時のシミュレーション波形)
PCI-Xバス・モジュールのテスト(PCI-Xのコンフィギュレーション・アクセス、ターゲット・アクセスを検証するためのテストモジュールをインプリメントして、ボードにダウンロード。Linuxホストを立ち上げたら、一発で認識。やったーーー!!! )
PCI-Xバス・モジュールのテスト(続き1)(PCIコマンド・レジスタのビット1(メモリ領域イネーブルビット)が1のときにヒット判定をしなくてはいけないのを忘れていた。バグフィックス)
PCI-Xバス・モジュールのテスト(続き2)(PCI-Xのコンフィギュレーション・リードのChipScope波形。PCIステータスレジスタ(0x06)の bit4 (Capabilities List ビット)に 1 を立てるのを忘れていた。WORDリードアクセス時のChipScope波形。)
PCI-Xバス・モジュールのテスト(続き3)(PCI-Xステータス・レジスタを読んでいるのを確認。BIOSで読んでいるのではなく、Linuxが読んでいるような感じだった。 )
PCI-Xバス・モジュールのテスト(続き4)(Configuration WriteのChipScope波形)
PCI-Xバス・ターゲット・モジュールのテスト(終了)(PCI-Xバス・ターゲット・モジュールは Single Data Phase Disconnection を組み込んで、バックエンドがビジーの場合はリトライを返すことにした。テスト回路で3回リトライを繰り返した後で正常に Write した時のChipScope波形。テスト回路で3回リトライを繰り返した後で正常に Read した時のChipScope波形)
PCI-Xマスタ・モジュールの難しさ(PCI-Xマスタ・モジュールの難しさの愚痴をせつせつと書いてある)
PCI-Xマスタ・モジュール(PCI-Xマスタ・モジュールがだいぶできてきた)
PCI-Xマスタ・モジュールのシミュレーション(PCI-Xマスタ・モジュールのシミュレーションが大体できた)
PCI-Xマスタ・モジュールのテスト(PCI-Xのマスタ・リードを Memory Read Block コマンドで転送長を8バイト、REQ64#を0にアサートして、64ビットアクセスとしてアクセスした。そうするとホストはスプリット応答で返した。 )
PCI-Xマスタ・モジュールのテスト2(このチップセットは、転送長が8バイトでは、REQ64#をアサートしても、スプリット完了のデータ転送は32ビット幅でした。しかし、転送長を16バイトにしてみたところ、スプリット完了のデータ転送は、チップセットがREQ64#をアサートして64ビット幅のデータ転送になった。 Chipscope波形あり)
チップセットのPCI-Xスプリット完了トランザクション(PCI-Xマスタ・アクセスで、512byteをバースト読み出ししてみた。そうすると、例によってスプリット応答が返ってきた。ADBによる中断。Chipscope波形あり)
PCI-Xのスプリット完了(1Kbyte)(ホストパソコンのメモリ1Kbyteをバースト・リード (マスタ・アクセスでPCI-X Memory Read Block) してみた。そうしたら512byteごとに分割されて転送されてしまった。Chipscope波形あり)
  1. 2007年09月23日 11:46 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”Timing Analyzerの使い方”の目次

Timing Analyzerは他のカテゴリの記事でも、頻繁に使用しているが、特に普段使わない使用法をこのカテゴリで紹介している。

ISEで任意のパスのディレイを見る方法
(TIming Analyzerの Analyze against Users Paths by defining Endpoint 機能を使用して任意のパスのディレイを見る方法。サンプルプロジェクトを用意し、キャプチャ画像を使用して説明している)
ISEで任意のパスのディレイを見る方法2(ISEで任意のパスのディレイを見る方法を使用して、使用スライスの位置をFloorPlannerを使用して移動し、クロックディレイの差を比較検討している)
ISEで任意のパスのディレイを見る方法3(Timing Analyzerの便利な使い方と他のカテゴリのTiming Analyzerの使い方へのリンク)

他のカテゴリのTiming Analyzerの使い方
Floorplannerの使い方覚書1(TIming Analyzerの基本的な使用方法とFloorPlannerとの連携方法を詳しく説明)
Floorplannerの使い方覚書3(TIming Analyzerの基本的な使用方法とFloorPlannerとの連携方法を詳しく説明)
Spartan3Eの入力用プログラマブル遅延素子(Timing Analyzerの Analyze against User Specified Path by defining Clock and IO Timing 機能を使用して入力端子のセットアップ時間を計算。キャプチャ図入りで説明)
  1. 2007年09月23日 05:15 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”FPGAチップ内の配線方法”の目次

XilinxのFPGAについての雑感(Placer Cost Table(Place & Routeのプロパティの中)を変更したことによるインプリメント結果の変化)
今日の教訓(出力用レジスタをIOB(Input Output Block)入れるための条件)
Re: FPGAでディレイ >>>保証なし(FPGAの内部遅延をTiming Analyzerの解析結果と実測値から考察)
クロック用パッドとBUFGの関係(再度コンパイルすると、CLK入力からBUFGMUXまでの経路がぜんぜん違ってしまうことがあるので注意、FPGA Editorの図とかで説明)
BUFGMUXの配置方法(グローバルクロック配線がかち合わないように自分でBUFGMUXをフロアプランする方法。Virex2でクロックを十数個使う場合は、Placerにお任せではうまくBUFGMUXを配置してくれない場合があるようだ。)
Virtex2, Virtex2proのIOBのクロック配線の制約(これを考慮しないと後で泣きを見ます。どこかの大手代理店も考慮をしなかったため、DDRのDMが使用不能になったこともあるそうです)
DDR SDRAMのDQS信号でデータをサンプルする方法1(DDR SDRAMのデータをFPGAで受け取る場合に、DQSをクロックとして受け取る方法を行うときに、DQSをグローバルクロックを使用しないで受ける)
クロックを遅延する方法(グローバルバッファに入る前にクロックを内部の論理素子で遅延する方法。MUXF5プリミティブやLUT3プリミティブを使用)
Spartan3Eの入力用プログラマブル遅延素子(Spartan3Eの入力用プログラマブル遅延素子のうちIOB内蔵のFF用の遅延素子について考察。 IFD_DELAY_VALUE を変更して各タップの遅延量を Timing Analyzer で確認)
Spartan3Eの入力用プログラマブル遅延素子2(Spartan3Eの入力用プログラマブル遅延素子のうちIOBの外への出力信号の遅延素子について考察。 IBUF_DELAY_VALUE を変更して各タップの遅延量を Timing Analyzer で確認)
Spartan3Eの入力用プログラマブル遅延素子(おまけ)(Spartan3Eの入力用プログラマブル遅延素子(おまけ)はDCMを使ってインプリメントしてみた。 )
DCMを使わないクロックを使いIOB内のFFでデータを受ける(DCMを使わないクロックを使いIOB内のFFでデータを受けたときの入力端子のセットアップ時間について)
  1. 2007年09月22日 10:28 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”その他のXilinxツールについて”の目次

ISEでの組み合わせ回路の論理シミュレーション(ISEのテストベンチ生成ツールを使用した組み合わせ回路の論理シミュレーションのやり方)
FPGAの静的消費電力(ちょっとだけXpowerを使ってみた。シミュレーション・パターンはいれずに静的消費電力のみ)
ISE8.2iをコマンドラインから使う(ISEが起動したコマンドを使用して、お手軽にコマンドラインからISEを使用する方法)
DATA2MEMの使い方(FPGA内部BRAMをプロセッサのプログラムを収納するメモリに使用しているときに、DATA2MEMを使用して出来上がった.bitファイルにプログラムをロードする方法)
PicoBlazeの命令用BRAMにプログラムをDATA2MEMでロードする
COMPXLIB(ModelSim SE用にCOMPXLIBコマンドを使用してライブラリをコンパイルする)
PlanAhead 9.1(PlanAhead 9.1をお試しで使ってみた。実際のうちのインプリメントでは何故かうまくいかなかったので、保留となっている)

  1. 2007年09月22日 07:12 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”入門Verilog"の目次

Verilog HDL 2001(Verilog2001の仕様、generate, always @*)
Verilog-HDLのお勉強(Verilogでのreg宣言した信号にオール1を代入)
Verilog-HDLのお勉強2(テストベンチのお勉強、$display, $fopen, $fdisplay, $readmemb)
入門Verilog HDL記述を読んでます(リダクション演算子、Verilogの印象)
入門Verilog HDL記述の回路の検証(VHDL書きの私の感性に合わずにq <= {q[2:0], si}; に書き換え)
SystemVerilogの本を買った(SystemVerilogの本を買った。それだけです)
Verilog-HDLで書いてみた(VHDLのARRAYをVerilogのレジスタ配列に書き換えてみた)
DDR SDRAMコントローラをVHDLからVerilog2001へ書き換える1(VHDLのpackabe文をVerilogのparameter文と`includeへ書き換える)
DDR SDRAMコントローラをVHDLからVerilog2001へ書き換える2(VHDLのgenerateからVerilog2001のgenerateへ書き換え)
DDR SDRAMコントローラをVHDLからVerilog2001へ書き換える3(`default_nettype noneでデータ型チェックを厳密に)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション(Verilogソースに `uselib lib = unisims_ver でunisimライブラリを追加、後にModelSimのコマンドラインからライブラリを追加したほうが良いとわかった)
Verilogの疑問(VHDLの for で使用する変数はローカルだが、Verilogの for で使用する変数はグローバルなのかという疑問)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション2(Verilogシミュレーションでの glbl.v モジュールの使用方法、ModelSimのコマンドラインからライブラリを追加する方法)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション3(Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーションはやっとelaborateすることが出来たが、まだバグバグ)
Verilog2001版DDR SDRAMコントローラーのISEでのインプリメンテーション(// synthesys tarnslate_off, // synthesys tarnslate_onの組を使うとバグる)
Verilogでのシミュレーションの疑問(Verilogではシミュレーション時にステートマシンのステート名が通常では表示されないということ、今思えば当然でした)
Verilogでのシミュレーションの疑問(解決編)(VerilogファイルをModelSimでシミュレーションする際にステートマシンのステート名をwaveウインドウで表示する方法がわかった)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション4(バグフィックス中、慣性遅延にはまってしまった)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション4への回答(慣性遅延を伝播遅延に書き直した)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション5(ビット演算子の否定~をVHDLの否定!に大幅に間違えていた)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション6(Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーションは大体終了、たいしたことは書いていない)
Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション7(シミュレーションも完了し、ISE8.2iでインプリメントしてもSpartan3E Starter Kitで動作した。報告のみ)
シミュレーション時とインプリメント時でのインクルードファイルの使い分け
Verilog2001でのネット名キープ方法(Verilog コードで属性を受け渡す場合の推奨方法について。Verilogでのネット名のキープ記述)
PS/2キーボードインターフェース用テストベンチ(task使用)(PS/2キーボードインターフェース用テストベンチをtask 文を使用して、Verilog2001で書いて、シミュレーションして確かめてみた)
Xilinxのライブラリをコンパイルする場合の注意(`default_nettype wire)(Verilogコードの最初に、`default_nettype noneを書いたら endmodule の後に、必ず `default_nettype wire を書きましょう)
XilinxデバイスのVerilogシミュレーション時の注意点(glbl.v)(glbl.vでは、グローバル セット/リセット信号が100ns アサートされているので、その間はリセットされています。注意しましょう)

他のカテゴリでのVerilogの記事
Verilog2001版DDR SDRAMコントローラのバグ(always@* 中の for で使用する変数をグローバル変数からローカル変数に変更)
PS/2キーボードインターフェース用テストベンチ(task使用)のアサーション(Verilog2001を使用して前のVHDLと同様にアサーションを組み込んでみた。Veritakでの動作例を示した)
PS/2キーボードインターフェース用テストベンチ(task使用)のアサーション($timeformat)(たっくさんに $timeformat を教えてもらったので、エラーの発生した時刻を表示できるようにした。同様にVeritakでの動作例を示した)
キャラクタ・ディスプレイ・コントローラのシミュレーション(Verilog で作られたキャラクタ・ディスプレイ・コントローラの表示文字をシミュレーションによって確認する方法)
  1. 2007年09月21日 20:49 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”DDR SDRAMコントローラ”の目次

DDR SDRAMコントローラ作製予定(XAPP268動的位相調整でクロックをシフトしてちょうど良いクロックの位置を自動的に検出してDDR SDRAMのデータを受けようと決意)
DDR SDRAMコントローラ その後(シミュレーションしたらバグがぽろぽろ)
DDR SDRAMコントローラ その後2(DDR SDRAMコントローラとマイクロンのチップMT46V16M16、4個のモデルをつないで、シミュレーション、シュミレーション波形あり)
DDR SDRAMコントローラのインプリメント(Xilinx社のFPGA、Virtex2の6000,FF1517ピンでインプリメントするが、タイミングが満足しない)
DDR SDRAMコントローラのインプリメント2(まだ、タイミングが満足しない。syn_maxfanディレクティブ(Synplify Pro)を使用して、ファンアウトを制御してタイミングミート)
DVIボードのDDR SDRAMコントローラのテスト(いままで作ってきたDDR SDRAMコントローラを実記に入れてテストしてみたが動作せず)
DDR SDRAMコントローラ何回目だがわからない(166MHzでは動かないので、83MHzでやってみたら動作した)
DDR SDRAMコントローラ何回目だかわからない2(PCI66MHzの2倍、133MHzでインプリメントしたがだめ、使うクロックの種類を少なくした。clk180をnot clkに変更)
V2, V2proでのDDR SDRAMコントローラ1(V2, V2proでのDDR SDRAMコントローラを作るときの方式の詳しい検討)
V2, V2proでのDDR SDRAMコントローラ2(V2, V2proでのDDR SDRAMコントローラを作るときの方式の詳しい検討の続き、タイミングチャートあり)
DDR SDRAMのDQS信号でデータをサンプルする方法2のまえふり(図らずも-- pragma translate on のバグの紹介、気をつけよう)
DDR SDRAMのDQS信号でデータをサンプルする方法2(DDR SDRAMのDQS信号でデータをサンプルする方法のうち、SRL16EプリミティブでFIFOを作って実際にDDR SDRAMのデータを受ける方法、サンプルプロジェクトを示し、やり方、結果を図で丁寧に説明)
Spartan3E Starter Kit用DDR SDRAMコントローラへのリンク(他のカテゴリに入っているDDR SDRAM関連記事へのリンク)
  1. 2007年09月21日 05:29 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

"VHDLの書き方"の目次

for generateで生成した分散RAMの初期化方法
XSTでのVHDLインプリメントの注意点(math_realライブラリを使って、log2(値)を使って、ビット幅を算出しようとしたら丸めのために失敗した)
私流のVHDLの書き方1(constant文で値を意味のある文字列で置き換える方法やfunctionの使い方の例)
私流のVHDLの書き方2(package文とpackage body文の書き方の例)
VHDLにおけるifdefの代わり(Verilogのifdefの代わりにVHDLではif generate文を使う)
PCI-Xバスへの出力信号のHDL記述(PCI-Xの出力信号のVHDLでの記述方法の一例、人間の見易さを第一に考えている)
FFをIOBに入れるためのVHDLの書き方(Synplify Pro編)(PCI-Xバスへの出力信号のHDL記述よりも確実な書き方)
あらかじめ定義された属性(Predefined Attributes)
多次元配列(多元配列の書き方)
ブロック文(VHDLのブロック文と使い方)
ありがとう、30万アクセスとVHDLの共有変数(たーぼ のハードウェア設計記録さんのVHDL TIPS 「shared variableの使用法」の紹介)
PS/2キーボードインターフェース用テストベンチ(procedure使用)(procedure文を利用して、”日曜デジタル”の”PS/2に挑戦”のPS/2キーボード・インターフェースのテストベンチを書いてみた。procedure文はサブプログラムを書くときに使われる。wait文も書くことができるので、テストベンチでプロセッサのバスプロトコルやシリアルインターフェースの通信手順を書くのも使用することができる。)
LOG2の値の求め方XSTでのVHDLインプリメントの注意点で失敗したLOG2の求め方をOPENCORESのソースで解決した)

他のカテゴリでのVHDLの記事
VHDLの共有変数を使用したシミュレーション(VHDLの共有変数を使ってテストベンチで下の階層の信号を見る)
PCIバスなどのシミュレーション(VHDL)(PCIバスのサスティンド・トライステート信号をシミュレーションする際の問題点と一解決方法)
DDR SDRAMコントローラをVHDLからVerilog2001へ書き換える2(VHDLでLUTを使用したDual Port RAMのRAM16X1Dプリミティブをアドレス幅だけインスタンス)
DDR SDRAMコントローラをVHDLからVerilog2001へ書き換える1(VHDLでのPackageの書き方の一例)
PS/2キーボードインターフェース用テストベンチ(procedure使用)のアサーションのようなものPS/2キーボードインターフェース用テストベンチ(procedure使用)のVHDLで書いたテストベンチにアサーションのようなものを追加して、エラーが出たらシミュレーションがブレークして、エラーメッセージが出るようにした)
キャラクタ・ディスプレイ・コントローラのシミュレーション(VHDL)(キャラクタ・ディスプレイ・コントローラの表示文字をシミュレーションによって確認する方法、VHDL版。こちらはPS/2キーボード・インターフェース回路とつながっている)

その他、いろいろなところに散らばっているのであきらめました。
  1. 2007年09月20日 22:05 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”FPGA Editorの使い方”の目次

やはりブログは逆順なので、最初から見にくいので、各カテゴリの目次を作ることにした。まずはここから。
FPGA Editorの使い方1(基本的な使い方)
FPGA Editorの使い方2(FPGAでのスライスやIOBの中身の見方)
FPGA Editorの使い方3(内部配線を外部端子に出力)
FPGA Editorの使い方4(追加したProbe(テスト用の出力ピン)の削除の仕方)
FPGA内の配線を固定する(FPGA Editorで配線も固定する方法)
DCMの位相シフト量の変え方(FPGA EditorでDCMの位相シフト量を変更)
FPGA Editorで配置と配線を割り当てる1FPGA Editorで配置と配線を割り当てる2FPGA Editorで配置と配線を割り当てる3(MAPのManually Place & Route で FPGA Editor を起動して論理素子、IOBの配置と配線を決定する。その後、UCFファイルに決定した論理素子、IOBの配置と配線を書き込み、再度インプリメントする)
  1. 2007年09月20日 20:48 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

”PACEの使い方”の目次

PACEの使い方1(PACEでのピンの配置)
PACEの使い方2(ブロック単位での信号規格の定義)
PACEのエラー回避方法(PACEを起動するときの"ERROR:HDLParsers:3014"の回避方法)

他のカテゴリでのPACEの記事
Virtex4のリージョナルバッファ(BUFIO、BUFR)(PACEを起動してのピンの配置)
DDR SDRAMのDQS信号でデータをサンプルする方法2(BANKを指定してピンを配置する)
スパルタン3スタータキットでのISE8.1iのチュートリアル5(インプリメンテーション編)(Package Viewでのピンの配置)
BUFGMUXの配置方法(BUFGMUXの配置)
  1. 2007年09月20日 20:46 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0

夜中の火事

今日の早朝3時ころ、消防車の音が聞こえ、犬がうるさくほえていたので、外に出てみたら、南西が炎で真っ赤だった。これはすぐそばで、火事になったかと思ったが、実は割と遠くて、直線距離で400m位あった。でも、すぐ近くに見えて、火の粉が飛び散っていて、本当に怖かった。これがすぐそばで燃えていたらパニックになってしまうと思う。火事は本当に怖い。
そのときは、消防車が集まってきたようなので、家に入って寝なおそうと思ったが、眠れない。少し横になったが、すぐに起床した。明るくなってきたころ、自転車で見に行ったが、消防車、パトカー、救急車でいっぱい。とても火元の家まではいけなかった。3軒燃えてしまったようだ。木工所から火が出て、洋品店に延焼、その隣の家にも延焼したようだ。今他の人に聞いたら、火元が逆といっていたので、わからない。明日の新聞で確認してみよう。(確認しみたら、やはり木工所から出火したようだ)
今日は、やはり眠い。
  1. 2007年09月19日 21:46 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

”アサーション事始め”の目次

PS/2キーボードインターフェース用テストベンチ(procedure使用)のアサーションのようなものPS/2キーボードインターフェース用テストベンチ(procedure使用)のVHDLで書いたテストベンチにアサーションのようなものを追加して、エラーが出たらシミュレーションがブレークして、エラーメッセージが出るようにした)
PS/2キーボードインターフェース用テストベンチ(task使用)のアサーション(Verilog2001を使用して前のVHDLと同様にアサーションを組み込んでみた。Veritakでの動作例を示した)
PS/2キーボードインターフェース用テストベンチ(task使用)のアサーション($timeformat)(たっくさんに $timeformat を教えてもらったので、エラーの発生した時刻を表示できるようにした。同様にVeritakでの動作例を示した)
  1. 2007年09月19日 20:51 |
  2. カテゴリ別の目次
  3. | トラックバック:0
  4. | コメント:0
»