fc2ブログ

[NEEK]LCD同期ズレを修正

NEEKのパネルは、Toppoly TD043MTEA1 LCD moduleを使ってると
「Implementing an LCD Controller」という資料に書いてある。

このLCDのデータシートをぐぐって見てみると、以下の仕様だ。

<NEEKでは800xRGBx480で使用>
NCLK: 33.2 MHz
Horizontal Valid Data: 800 NCLK
1 Horizontal Line: 1056 NCLK
HSYNC pulse width: Min 1 NCLK
Hsync blanking: 216 NCLK
Hsync front porch: 40 NCLK
DENB Enable Time: 800 NCLK
Vertical Display Area: 480 H
Vertical Period Time: 525 H
VSYNC pulse width: Min 1 H
Vertical blanking: 35 H
Vertical front porch: 10 H
Vertical blanking of DENB: 40 H



NEEKでは50MHz外部クロックはあるが、パネル規定の33.2MHzぴったりは生成出来ない。
しかも、NEEKでは、今回1NCLK(33.2MHz)に対して、基本クロックを100MHz(50MHz x 2逓倍)
にして、100MHz x 3発でRGBを8bitづつ送る使い方。

パネル規定=33.2MHz = 30.12ns
NEEK= 100MHz x 3 = 30ns

という違いがあるので、上記のパネル規定のタイミング設定をすると、定期的に画面が消灯する現象が出た。

ちなみに、計算してみると1frame分の時間の違いは以下。
パネル規定=16.70ms/frame
NEEK=16.63ms/frame

この差を埋めるために、
Hsync blanking: 216 NCLK → 220 NCLK(HSYNC pulse widthを1から5へ)
としたら、画面の定期消灯が無くなった。
スポンサーサイト



[NEEK]DDRコントローラでREAD時ALTDDIO_IN使用

NEEK(Cyclone III)でDDRコントローラを自作する場合、WRITE時のDQ Rise/Fall出力と、
READ時のDQ Rise/Fall受けをどうするかを検討中。

MegaWizardで探すと、ALTDDIO_INとALTDDIO_OUTを使うべきと判断。

WRITEコマンドでは、DDRコントローラのクロックを使用するので、クロックは連続して動いてる。
問題はクロックにDDR SDRAMメモリから来るDQSを使うREAD時。

DDR SDRAMメモリからは、必要分のDQS信号しか送って来ない。
その上、ALTDDIO_INの動きを見ると、
  データH側= DQS Riseでラッチし、そのまま出力。
  データL側= DQS Fallで一時受け。それを次のDQS Riseで出力。
こうなってた。

これ、データHは良いのだが、データLは、一連のREAD動作の最後に来たデータ
(最後のDQS =Lの時のDQの事)は、次のDQS RiseでやっとALTDDIO_INから出力される。
しかし、DDR SDRAMメモリから次のDQS Riseは来ない。なぜなら必要分のDQSしか来ないから。
次のDQS Riseが来るのは、次の無関係なWRITE or READコマンドで動くDQS Riseの時。

これ使えないのでは?
と思ってたら、invert_input_clocksというパラメータに着目。(上記の動きはOFFの時)
これをONしたら、
  データH側= DQS Fallでラッチし、そのまま出力。
  データL側= DQS Riseで一時受け。それを次のDQS Fallで出力。
となった。
データHとLが逆になるが、これで最後のDQS Fallの時に、データHもデータLも
ALTDDIO_INから出力されるようになった。

DDR SDRAMメモリから来るDQSを使ってラッチする場合、ALTDDIO_INのinvert_input_clocks=ON
は必須だと理解したが、どうなんだろ?

XilinxのIDDRはすんなり使えたのだが、アルテラでははまってしまった。

[NEEK][MICO32]Micron社DDR SDRAM Verilogモデルvlogエラー

Model Technology ModelSim ALTERA vlog 10.1b Compiler 2012.04 Apr 27 2012

-- Compiling module ddr

** Error: (vlog-2902) 3924256Mb_ddr/ddr.v(1414): A `define was found on the same line as a SystemVerilog `ifdef, `ifndef, `elsif, or `else.



実行コマンドはこれ。

vlog -sv +define+sg5B 3924256Mb_ddr/ddr.v



エラーの指摘行は以下。

`else `define sg75Z



一行にまとめて書くのがダメらしい。
改行して2行にしたらエラー消えた。

`else
`define sg75Z

[NEEK][MICO32]ModelSim Altera Starterはインスタンス数制限?

Xilinx版の回路から、RAMとかFIFOとかODDRとかIDDRなどを、ALTERAライブラリもしくは自作回路へ
置き換えてSimulationしてるが、だいぶ遅い。60160ns/minほど。

また、以下のようにサイズ制限を越えた的なMSGも出ていて、これって確かSimulation速度が
制限かかってだいぶ落ちてるはず。

# ** Warning: Design size of 114 instances exceeds ModelSim ALTERA recommended capacity.
# This may because you are loading cell libraries which are not recommended with
# the ModelSim Altera version. Expect performance to be adversely affected.



ここで言ってるのは、「インスタンス数」って事なので、バスの1bit毎に呼び出してたmoduleを
parameter指定で複数bit対応出来るように修正した。
これで例えば16bitデータバスなんかは16個インスタンス呼んでたのが、1個になるし、MSGの
指摘数が114個からある程度減ると思ってた。

しかし、修正前後で指摘数は114個のまま。インスタンス呼び出しの数じゃないのか??


・もしやvlogでコンパイルしたmodule数か? → いえ、実験したが違います。
・altera_mf.vの必要なmoduleだけ限定すれば減る? → いえ、減りませんでした。
・moduleを2種類未使用へ、インスタンス10個削除 → Warningが114から113に減った。
・コンパイルログの「Top level modules」の数は114。でもWarningは113。関係あり?

[NEEK][Mico32]Video Sync Generator設定

Qsys生成のRTLはActive-HDL Student Editionでコンパイル出来たようだが、Simulation実行時に
エラーが出てしまって、原因わからないので断念。
かと言っても、Qsys生成RTLを使ってるとSimulationが遅過ぎて作業が進まないので、
以前Xilinx ML501でいじってた回路で遊ぶことに。

ちなみに、ModelSim ASEが遅いと思ったが、Qsysで作った回路ほど遅くなく、
元々のXilinx用回路構成で70685ns/分というスピードだった。
主にRAM/FIFOをAltera版に変えて、エラーが消えた時点でVeritakでもやってみたが、
この回路ではModelSim ASEの方が早かった。正確ではないが、ざっと2~3倍くらいの差だったかな。

まずはNEEK LCDへカラーバーでも表示したい。

以前も書いたが、NEEKの時のVideo Sync Generatorは以下。
Qsys:Video Sync Generator
Data Stream Bit Width 8
Beats per Pixel 3
Number of Columns 800
Number of Rows 480
Horizontal Blank Pixels 216
Horizontal Front Porch Pixels 40
Horizontal Sync Pulse Pixels 1
Horizontal Sync Pulse Polarity0
Vertical Blank Lines 35
Vertical Front Porch Lines 10
Vertical Sync Pulse Lines 1
Vertical Sync Pulse Polarity 0
Total Horizontal Scan Pixels 1056
Total Vertical Scan Lines 525
カレンダー
11 | 2023/12 | 01
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード