FC2ブログ

[VEEK]カメラの映像を表示したい(12)(MMC用SGDMAディスクリプタ不具合)

SDMMC->SDRAMへのSGDMA転送において、ディスクリプタチェーン作成時不具合。
NEEKで成功した時は、STATUSレジスタbit2のDESCRIPTOR_COMPLETED=Hを
ポーリングする箇所。
ここで止まるのでSTATUSレジスタ値調べるとbit3の方がCHAIN_COMPLETED=H
になってる。NEEKで成功した時と何が違うかデバッグ中。

ModelSimでの解析に期待して見る。
Sim前に変更した箇所は以下。(前にも同様の事書いたけど)

1つ目は、NiosIIカスタム命令YUV2RGBで使う乗算器回路をvlogしてくれないので
以下ファイルに次の一行を挿入。
■DE2-115_sys_builder/software/de2_115/obj/default/runtime/sim/mentor/msim_setup.tcl
vlog "C:/user/work/veek/DE2-115_sys_builder/MUL_9x9.v" -work DE2_115_tb_custom_inst_yuv2rgb_0


2つ目はテストベンチ内に、PLL/areset端子をリセットする記述を追記。
■DE2-115_sys_builder/DE2_115/testbench/DE2_115_tb/simulation/DE2_115_tb.v
integer i ;
reg pll_areset ;
wire clk_pixel_out_clk;

DE2_115 de2_115_inst (
.clk_pixel_out_clk (clk_pixel_out_clk),
.altpll_0_areset_export(pll_areset),

initial begin
pll_areset = 1'b1 ;
for (i=0; i<10; i=i+1) @(posedge de2_115_inst_clk_bfm_clk_clk) ;
pll_areset = 1'b0 ;
end



これでModelSim起動すると、20.2msくらいで以下エラーでストップする。
とりあえずメモ。まずは実機でデバッグして行く。

# Warning: read_during_write_mode_mixed_ports is assumed as OLD_DATA
# Time: 0 Instance: DE2_115_tb.de2_115_inst.nios2_0.n01i0Ol
# Warning: read_during_write_mode_mixed_ports is assumed as OLD_DATA
# Time: 0 Instance: DE2_115_tb.de2_115_inst.nios2_0.n01ii0l
# Warning! Number of metastability protection registers is not specified. Based on the parameter value CLOCKS_ARE_SYNCHRONIZED=FALSE, the synchronization register chain length between read and write clock domains will be 2.
# Time: 0 Instance: DE2_115_tb.de2_115_inst.pixel_fifo.the_dcfifo_with_controls.the_dcfifo.dual_clock_fifo.DCFIFO_MW
# ** Warning: (vsim-3534) [FOFIR] - Failed to open file "../DE2_115_sgdma_mmc_desc.hex" for reading.
# No such file or directory. (errno = ENOENT) : C:/altera/11.1sp1/modelsim_ase/win32aloem/../altera/verilog/src/altera_mf.v(782)
# Time: 0 ps Iteration: 0 Instance: /DE2_115_tb/de2_115_inst/sgdma_mmc_desc/the_altsyncram
# ERROR: cannot read ../DE2_115_sgdma_mmc_desc.hex.
# ** Warning: (vsim-7) Failed to open readmem file "../DE2_115_sgdma_mmc_desc.ver" in read mode.
# No such file or directory. (errno = ENOENT) : C:/altera/11.1sp1/modelsim_ase/win32aloem/../altera/verilog/src/altera_mf.v(45222)
# Time: 0 ps Iteration: 0 Instance: /DE2_115_tb/de2_115_inst/sgdma_mmc_desc/the_altsyncram
# Warning: read_during_write_mode_mixed_ports is assumed as OLD_DATA
# Time: 0 Instance: DE2_115_tb.de2_115_inst.mmc_spi_0.SDIF_MEM_inst.altsyncram_component
# 0: INFO: DE2_115_tb.de2_115_inst_clk_bfm.__hello: - Hello from altera_clock_source.
# 0: INFO: DE2_115_tb.de2_115_inst_clk_bfm.__hello: - $Revision: #1 $
# 0: INFO: DE2_115_tb.de2_115_inst_clk_bfm.__hello: - $Date: 2011/09/26 $
# 0: INFO: DE2_115_tb.de2_115_inst_clk_bfm.__hello: - CLOCK_RATE = 50
# 0: INFO: ------------------------------------------------------------
# 0: INFO: DE2_115_tb.de2_115_inst_reset_bfm.__hello: - Hello from altera_reset_source
# 0: INFO: DE2_115_tb.de2_115_inst_reset_bfm.__hello: - $Revision: #1 $
# 0: INFO: DE2_115_tb.de2_115_inst_reset_bfm.__hello: - $Date: 2011/09/26 $
# 0: INFO: DE2_115_tb.de2_115_inst_reset_bfm.__hello: - ASSERT_HIGH_RESET = 0
# 0: INFO: DE2_115_tb.de2_115_inst_reset_bfm.__hello: - INITIAL_RESET_CYCLES = 50
# 0: INFO: ------------------------------------------------------------
# 0: INFO: DE2_115_tb.de2_115_inst_reset_bfm.reset_assert: Reset asserted
#
# ************************************************************
# This testbench includes an SOPC Builder Generated Altera model:
# 'altera_sdram_partner_module.v', to simulate accesses to SDRAM.
# Initial contents are loaded from the file: 'altera_sdram_partner_module.dat'.
# ************************************************************
# 0: INFO: DE2_115_tb.sdram_my_partner_clk_bfm.__hello: - Hello from altera_clock_source.
# 0: INFO: DE2_115_tb.sdram_my_partner_clk_bfm.__hello: - $Revision: #1 $
# 0: INFO: DE2_115_tb.sdram_my_partner_clk_bfm.__hello: - $Date: 2011/09/26 $
# 0: INFO: DE2_115_tb.sdram_my_partner_clk_bfm.__hello: - CLOCK_RATE = 40
# 0: INFO: ------------------------------------------------------------
# Note : Cycloneive PLL was reset
# Time: 0 Instance: DE2_115_tb.de2_115_inst.altpll_0.de2_115_altpll_0_de2_115_altpll_0_altpll_94o2_sd1_cycloneive_pll_pll7_149
# Note : Cycloneive PLL locked to incoming clock
# Time: 250000 Instance: DE2_115_tb.de2_115_inst.altpll_0.de2_115_altpll_0_de2_115_altpll_0_altpll_94o2_sd1_cycloneive_pll_pll7_149
# 990000: INFO: DE2_115_tb.de2_115_inst_reset_bfm.reset_deassert: Reset deasserted
# 20268165 ns: WARNING: DE2_115_nios2_0_test_bench/A_wr_data_unfiltered is 'x'
# 20268240 ns: WARNING: DE2_115_nios2_0_test_bench/A_wr_data_unfiltered is 'x'
# 20268465 ns: WARNING: DE2_115_nios2_0_test_bench/A_wr_data_unfiltered is 'x'
# 20268490 ns: ERROR: DE2_115_nios2_0_test_bench/E_valid is 'x'
# Break in Module DE2_115_nios2_0_test_bench at C:/user/work/veek/DE2-115_sys_builder/DE2_115/testbench/DE2_115_tb/simulation/submodules/DE2_115_nios2_0_test_bench.v line 614




SD to SDRAM用SGDMA設定見直し、修正したが、LCD画面のチラチラは変わらず。
SDRAM to LCD用SGDMA設定の方も見直す。

[VEEK]カメラの映像を表示したい(11)(System IDエラー)

tPAD画面うつるが、砂嵐のようにブレまくる。
SWダウンロード後は、色付きの砂嵐なので、何かしら画像データ送れてる様子。

デバッグ中、QsysのSDRAMコントローラ設定にミスあり。
DQ16bitでなく、32bitに変更。ISSIのSDRAMx16bit幅を2個使い。

QsysのGenerateし直すと、NiosII EclipseでRun As > NiosII Hardware
とやると、恒例のこのエラー。

Connected system ID hash not found on target at expected base address.


System IDインスタンス名は「sysid」としてるし(sysid_0にしてないし)、
今まで成功してた通りの設定でやり直しただけなんだけど。
このエラーいつも原因分からないけど、QsysのGenerateし直したり、
Clean Projectとかしてると、いつの間にか直るんだよね。
ちゃんとした原因を掴みたい。

やっぱり、無視してるaltera_reserved_tckのRemovalタイミング違反
が問題なのか??
SWプロジェクトとbspの両方Clean Project実行してもダメ。

分からない・・・何が問題なんだ?

(2012/1/14追記)
SWダウンロード時にRun ConfigurationでSystem IDエラーになる原因は、
どこかで意図せず間違ったsdcを読み込んでいるから?と仮定。
設定した覚えの無いsdcの見直し。設定外してみようと思うsdcのメモ。

nios_simple.qip内のcpu.sdc
eth_std_main_system\synthesis\submodules\eth_std_main_system_cpu.sdc



っと思ったけど、これらはqipで自動的に設定されてるし、qipもツールが作った
ようだから、これが間違ってても判断つかないよなぁ。

(2012/1/16追記)
やっぱりNiosII EclipseのRun ConfigurationでSystem IDエラーが消えない。
http://alterauserforums.com/forum/showthread.php?t=29825&page=2
ここの掲示板でsneha22さんが、全ピンの接続を確認しろ!と言っている。

I understand it I was in the same situation a month back.
Are all the pin connections to the LEDs in the design correct.Verify from the board manual you would have got with the development kit.Because it is a sample design but may be not for your fpga chip pr board?Have you verified all the hardware connections are correct?Did you download the correct .sopc file with correct pin conigurations?Check in the pin planner.


使ってなくても、全ピン仮のIN/OUTポートを作ってqsfでピンアサインしないといけないのか?

QuartusII > Compilation Reportタブ > Fiiter > Pin-Out file
において、User AssignmentにYが付いてなくて、PowerでもGNDでもない端子が
未接続でプロジェクト設定によってRESERVED_INPUT_WITH_WEAK_PULLUPに
なっているポートのようだ。

Terasicのデモ回路を参考に、全てピンアサインしてみるか。

(2012/1/22追記)
全ピンアサインしようと思ったけど、途中アサインエラーが解消出来ない。

諦めて単純な回路でテストしてみた。NiosII+System ID+内部SRAM+UARTの構成。
そうするとNiosII SBTでSWダウンロード時にSystem IDがNot Foundに
ならなくなった。でも同じ設定でやり直すとダメな場合もある。
どっかにタイミング制約漏れあって、やり直す毎にFailかMETかになってるとかか??

しかし、System IDがNot Foundにならなくても、そのままRUN実行すると、
ELF download failになる。
なんか、今まで何ともなく出来てたのに、たまたまだったって事か?
それとも、SOPC BuilderからQsysに変わって、間違ったやり方してるのか?

DE2-115ボードでQsysサンプルデザインあると良いが・・・見つからない。

個人的に作った試験用プロジェクト(sysid_test)でようやくSWダウンロード成功。
やった事は以下。

 ・NiosIIのインスタンス名を「nios2_0」にした。
  NiosII EclipseでRun Configuration > Target Connectionタブ
  でConnection欄のNameはこの名前になってたから合わせた。

 ・Qsysで、NiosIIのjtag_debug_module_reset信号もリセット信号として
  NiosII含む全IPへ接続した。つまり、
    - Clock Source回路のReset Output信号を自身以外の
      全回路のReset信号へ接続。
    - NiosIIのjtag_debug_module_reset信号を、Clock Source
      回路を除く、全回路(NiosII含む)のResetへ接続。

 ・NiosII EclipseでRun Configuration > Target Connectionタブ
  Ignore mismatched system Timestamp にチェック。
  一番下のDownload欄は3つ共チェック。
   (Download ELF、Start Processor、Reset xxx)



元々のプロジェクトもNiosインスタンス名を変えて、jtag_debug_module_reset
を接続したら、確かにSWダウンロードまで成功した。
これで正しいのか不明だが、デバッグにだいぶ時間かかった。長かった・・・

[VEEK]カメラの映像を表示したい(10)(tPAD I/F回路作成)

Terasic版VEEKで使われているLCDをtPADを呼ぶそうな。
tPADの仕様はhttp://bobgosso.blog13.fc2.com/blog-entry-149.htmlに書いた。

下の表は、現時点での設定メモ。順番は画像データの転送流れ順。
tPADにチラチラ画像が映りはしたが、ブレてるし、画面も滅茶苦茶。
画面がブレてるのはVideo Sync Generatorのパラメータが間違ってるか、
画像転送が間に合ってないのだろう。

Qsys: Scatter-Gather DMA Controller
Transfer mode Memory To Stream
Enable bursting on descriptor read master OFF
Allow unaligned transfers OFF
Enable burst transfers OFF
Avalon MM data master byte reorder mode No Reordering
Data Width 64
Source error width 0
Sink error width 0(fixed)
Data transfer FIFO depth 32(fixed)

        ↓

Qsys: Avalon-ST Timing Adapter
Support Backpressure with the ready signal (input) ON
Ready Latency (input) 0
Include Valid Signal (input) ON
Support Backpressure with the ready signal (output) ON
Ready Latency (output) 1
Include Valid Signal (output) ON
Data Bits Per Symbol (common) 8
Include Packet Support ON
Include Empty Signal AUTO
Data Symbols per Beat 8
Channel Signal Width(bits) 0
Max Channel 0
Error Signal Width(bits) 0
Error Signal Description nothing

        ↓

Qsys: On-Chip FIFO Memory
SingleResetMode OFF
Depth 1024
Allow Backpressure ON
Clock setting Dual clock mode
FIFO implementation Construct FIFO from embedded memory blocks
Create status interface for input OFF
Create status interface for output OFF
Input type AVALONST_SINK
Output type AVALONST_SOURCE
Data width 32(fixed)
Bits per symbol 8
Symbols per beat 8
Error width 0
Channel width 0
Enable packet data ON

        ↓

Qsys: Avalon-ST Timing Adapter
Support Backpressure with the ready signal (input) ON
Ready Latency (input) 1
Include Valid Signal (input) ON
Support Backpressure with the ready signal (output) ON
Ready Latency (output) 0
Include Valid Signal (output) ON
Data Bits Per Symbol (common) 8
Include Packet Support ON
Include Empty Signal AUTO
Data Symbols per Beat 8
Channel Signal Width(bits) 0
Max Channel 0
Error Signal Width(bits) 0
Error Signal Description nothing


        ↓

Qsys: Avalon-ST Data Format Adaptor
Data Symbols per Beat(input) 8
include Empty Signal (input) AUTO
Data Symbols per Beat(output) 4
include Empty Signal (input) AUTO
Data Bits Per Symbol (common) 8
include Packet Support ON
Channel Signal Width(bits) 0
Max Channel 0
Ready Latency 0
Error Signal Width(bits) 0
Error Signal Description nothing

        ↓

Qsys:Pixel Converter
Source Symbol Per Beat 1

        ↓

Qsys:Video Sync Generator
Data Stream Bit Width 24
Beats per Pixel 3
Number of Columns 800
Number of Rows 600
Horizontal Blank Pixels 88
Horizontal Front Porch Pixels 40
Horizontal Sync Pulse Pixels 128
Horizontal Sync Pulse Polarity0
Vertical Blank Lines 23
Vertical Front Porch Lines 1
Vertical Sync Pulse Lines 4
Vertical Sync Pulse Polarity 0
Total Horizontal Scan Pixels 1056
Total Vertical Scan Lines 628


ちなみに、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

[VEEK]仕様メモ

■部品表

Category Part ID Vendor Remarks Datasheet
Camera MT9P001 Micron - http://elcodis.com/parts/6009832/MT9P001_p6.html#datasheet



■tPAD
Parameter Symbol Min. Typ. Max. Unit
CLK Frequency FCPH - 39.79 - MHz
CLK Period FCPH - 25.13 - Ns
CLK Pulse Duty FCWH 40 50 60 %
DE Period FDEH+TDEL 1000 1056 - TCPH
DE Pulse Width FDH - 800 - TCPH
DE Frame Blanking FHS 10 28 110 FDEH+TDEL
DE Frame Width FEP - 600 - FDEH+TDEL
OEV Pulse Width TOEV - 150 - TCPH
OKV Pulse Width TCKV - 133 - TCPH
DE(internal)-STV Time T1 - 4 - TCPH
DE(internal)-CKV Time T2 - 40 - TCPH
DE(internal)-OEV Time T3 - 23 - TCPH
DE(internal)-POL Time T4 - 157 - TCPH
STV Pulse Width - - 1 - TH


Signal Name FPGA Pin No. Description I/O Standard
LCD_DIM PIN_P27 LCD backlight enable 2.5V
LCD_NCLK PIN_V24 LCD clock 2.5V
LCD_R0 PIN_V26 LCD red data bus bit 0 2.5V
LCD_R1 PIN_R27 LCD red data bus bit 1 2.5V
LCD_R2 PIN_R28 LCD red data bus bit 2 2.5V
LCD_R3 PIN_U27 LCD red data bus bit 3 2.5V
LCD_R4 PIN_U28 LCD red data bus bit 4 2.5V
LCD_R5 PIN_V27 LCD red data bus bit 5 2.5V
LCD_G0 PIN_P21 LCD green data bus bit 0 2.5V
LCD_G1 PIN_R21 LCD green data bus bit 1 2.5V
LCD_G2 PIN_R22 LCD green data bus bit 2 2.5V
LCD_G3 PIN_R23 LCD green data bus bit 3 2.5V
LCD_G4 PIN_T21 LCD green data bus bit 4 2.5V
LCD_G5 PIN_T22 LCD green data bus bit 5 2.5V
LCD_B0 PIN_V28 LCD blue data bus bit 0 2.5V
LCD_B1 PIN_U22 LCD blue data bus bit 1 2.5V
LCD_B2 PIN_V22 LCD blue data bus bit 2 2.5V
LCD_B3 PIN_V25 LCD blue data bus bit 3 2.5V
LCD_B4 PIN_L28 LCD blue data bus bit 4 2.5V
LCD_B5 PIN_J26 LCD blue data bus bit 5 2.5V
LCD_DEN PIN_P25 LCD RGB data enable 2.5V
TOUCH_PENIRQ_N PIN_L22 AD7843 pen interrupt 2.5V
TOUCH_DOUT PIN_L21 AD7843 serial interface data out 2.5V
TOUCH_BUSY PIN_U26 AD7843 serial interface busy 2.5V
TOUCH_DIN PIN_U25 AD7843 serial interface data in 2.5V
TOUCH_CS_N PIN_T26 AD7843 serial interface chip select input 2.5V
TOUCH_DCLK PIN_T25 AD7843 interface clock 2.5V



VGA_SINK.v内パラメータ
parameter SYMBOLS_PER_BEAT = 1;
parameter BITS_PER_SYMBOL = 24;
parameter READY_LATENCY = 0;
parameter MAX_CHANNEL = 0;

parameter H_DISP = 800;
parameter H_FPORCH = 40;
parameter H_SYNC = 128;
parameter H_BPORCH = 88;
parameter V_DISP = 600;
parameter V_FPORCH = 1;
parameter V_SYNC = 4;
parameter V_BPORCH = 23;

[VEEK]カメラの映像を表示したい(9)(MMC_disk_initialize無応答デバッグ)

SDRAM to LCDのSGDMAディスクリプタチェーン作成がNEEK同様
出来たみたいなので、次はMMCSPIコア設定。
MMC_disk_initializeで応答が無いので、UARTでTeraTermへ
表示して、printデバッグ的に原因を探っている。

どうやら下のwhileで止まっているらしい。

<mmc_spi.c内mmc_spi_InitSocket関数>
while( (UJIYA_IORD_MMCSPI_STATUS(mmc_spi_reg) & mmc_commexit)== 0) {}


mmc_spi_regはアドレスミスだったので現IPアドレスマップ通りに修正。

#ifndef mmc_spi_regbase
//#define mmc_spi_regbase (MMCSPI_STATUS)
#define mmc_spi_regbase (MMCSPI_BASE + MMCSPI_STATUS_OFFSET) // 2012.1.8
#endif

これで先に進んだ。
カレンダー
01 | 2020/02 | 03
- - - - - - 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
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

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

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

この人とブロともになる

QRコード
QRコード