Intel® SoC FPGA Embedded Development Suite
Support for SoC FPGA Software Development, SoC FPGA HPS Architecture, HPS SoC Boot and Configuration, Operating Systems
445 Discussions

DE10-Nano とGolden System Reference Design を利用しています。 AvalonSlave(Register)とAvalonMM IF(DMA)を持った回路を、HLSで作成して組み込みました。 私は、Registerにはアクセスできました。しかし、StartBitをONにしても処理が行われません。 質問: DE10-NanoのGSRDに、DMAIFを装備するオリジナル回路を組み込んだ履歴や手順など。 それらを示したURLをご存知の方がいたら教えてください。

孝東000
Beginner
1,687 Views
 
0 Kudos
1 Solution
EBERLAZARE_I_Intel
1,452 Views

Hi,

 

DMA controller is needed are you having issue adding the DMA controller? Unfortunately, we do not have example designs for this.

View solution in original post

13 Replies
MEIYAN_L_Intel
Employee
1,452 Views

Hi,

 

Based on my understanding, you have done a HLS flow which included Avalon Slave and Avalon MM in your platform designer, am I right? 

As mentioned earlier, you would like to find the information about the DMAIF, but I could not found any information about the DMAIF.

Is the DMAIF is a DMA controller?

Could you explain more on it?

 

Thanks

0 Kudos
孝東000
Beginner
1,452 Views

 

こんにちわ。 返信ありがとうございます。

私は、FPAG開発経験が無い人です。コメント助かります。

私が実施したのは以下の手順です。

手順

1.xxxx.c を高位合成しました。(HLS) -> xxxxBlock

xxxx.cは、DMAIFとレジスタを装備します。

関数の引数は、アドレスPointerをAvalon-MMで指定しました。

関数の引数は、パラメータをAvalon-Slaveで指定しました。

2.DE10-NanoのGSRDを用意しました。そのDIR以下に、xxxxBlock を格納しました。

3.Platform Designer(Quartus Prime 18.1 Lite Edition)を起動しました。

  xxxxBlock を hps_0 の f2h_sdram0 につなぎました。

 

私はこの文章を書いていて、気が付きました。

 [xxxxBlock] -DMA IF-> [hps_0]

理想

 [xxxxBlock] -DMA IF->[DMA Controller] -DMA IF-> [hps_0]

 [xxxxBlock]にDMAを行わせるために、

私は、 [xxxxBlock] と [DMA Controller]を組み込む必要がありますか?

0 Kudos
EBERLAZARE_I_Intel
1,452 Views

Hi,

 

Please allow me some time to check our document for information regarding this.

 

Are you trying to move data from xxxBlock to HPS via DMA?

 

Regards.

0 Kudos
孝東000
Beginner
1,452 Views

こんにちわ。返信ありがとうございます。

”Are you trying to move data from xxxBlock to HPS via DMA?”

Yes,I am.

私の希望。

 xxxBlock は、画像処理を行います。

 xxxBlock は、DMAで画像データを入力します。(DMA read)

 xxxBlock は、データを加工します。そして、転送先アドレスも変更します。

 xxxBlock は、DMAで画像データを出力します。(DMA Write)

 

 

状況

1.私は、Qurtus Prime HLSを使いました。

component xxxBlock(

 ihc::mm_master<unsigned int , ihc::aspace<1>,ihc::awidth<32>,ihc::dwidth<64>,ihc::latency<0>,ihc::maxburst<8>,ihc::waitrequest<true> > &a,

 ihc::mm_master<unsigned int , ihc::aspace<2>,ihc::awidth<32>,ihc::dwidth<64>,ihc::latency<0>,ihc::maxburst<8>,ihc::waitrequest<true> > &b,

 hls_avalon_slave_register_argument    unsigned int mode

 

 

2. 私は、Qurtus Prime Platform Designer を使いました。xxxBlockIPをつなぎました。

 xxxBlock xxxBlock_inst (

 // Interface: clock (clock end)

 .clock                 ( ), // 1-bit clk input

 // Interface: reset (reset end)

 .resetn                ( ), // 1-bit reset_n input

 // Interface: clock2x (clock end)

 .clock2x               ( ), // 1-bit clk input

 // Interface: irq (interrupt end)

 .done_irq              ( ), // 1-bit irq output

 // Interface: a (conduit sink)

 .a                     ( ), // 64-bit data input

 // Interface: b (conduit sink)

 .b                     ( ), // 64-bit data input

 // Interface: avmm_1_rw (avalon start)

 .avmm_1_rw_address     ( ), // 32-bit address output

 .avmm_1_rw_byteenable  ( ), // 8-bit byteenable output

 .avmm_1_rw_readdatavalid( ), // 1-bit readdatavalid input

 .avmm_1_rw_read        ( ), // 1-bit read output

 .avmm_1_rw_readdata    ( ), // 64-bit readdata input

 .avmm_1_rw_write       ( ), // 1-bit write output

 .avmm_1_rw_writedata   ( ), // 64-bit writedata output

 .avmm_1_rw_waitrequest ( ), // 1-bit waitrequest input

 .avmm_1_rw_burstcount  ( ), // 4-bit burstcount output

 // Interface: avmm_2_rw (avalon start)

 .avmm_2_rw_address     ( ), // 32-bit address output

 .avmm_2_rw_byteenable  ( ), // 8-bit byteenable output

 .avmm_2_rw_readdatavalid( ), // 1-bit readdatavalid input

 .avmm_2_rw_read        ( ), // 1-bit read output

 .avmm_2_rw_readdata    ( ), // 64-bit readdata input

 .avmm_2_rw_write       ( ), // 1-bit write output

 .avmm_2_rw_writedata   ( ), // 64-bit writedata output

 .avmm_2_rw_waitrequest ( ), // 1-bit waitrequest input

 .avmm_2_rw_burstcount  ( ), // 4-bit burstcount output

 

現在は、

[xxxxBlock] -DMA IF-> [hps_0] 直接つないでいます。

 

私が質問させてください。

 Interface: a (conduit sink)は exported です。これは問題ですか?

 Interface: b (conduit sink)は exported です。これは問題ですか?

もしも問題でしたら、何を接続するのでしょうか?

0 Kudos
EBERLAZARE_I_Intel
1,452 Views

Hi,

 

I am still working on this issue.

 

Regarding the exported interface, based on my experience they are not major errors and can be ignored. I will re-check if this is common.

 

Regards.

0 Kudos
孝東000
Beginner
1,452 Views

​こんにちわ。ありがとうございます。

貴方のご協力に、感謝します。

引き続き、よろしくお願いします。

0 Kudos
EBERLAZARE_I_Intel
1,452 Views

Hi,

 

Firstly, I sincerely apologize for the late response.

 

Yes, in order to use DMA you will need a DMA controller.

 

There is a good tutorial on the DMA usage below, you may check it out.

https://github.com/robertofem/CycloneVSoC-examples

孝東000
Beginner
1,452 Views

貴方に感謝します。ご協力ありがとうございます。

しかしながら、私は英語を読むのに時間が必要です。

作業をするのにも、時間を使います。

また後程コメントさせて下さい。

0 Kudos
EBERLAZARE_I_Intel
1,452 Views

Hi,

 

Got it, let me know if you need more help.

 

Regards.

0 Kudos
孝東000
Beginner
1,452 Views

貴方のURL,とても助かりました。ありがとう。質問させて下さい。

Q1: 確認させてください。Intel HLSでは、DMA Controller は作れない。ですか?

そのため、DMA ControllerがUDLの外側に必要と理解しました。

Q2: もしもIntel HLSでDMA Controllerを作れる場合、サンプルを教えてください。

理由。

DMA controller をUDLの内部に装備する必要があります。

入力DMAと出力DMAのアドレスをUDL(Logic)が制御しなくてはいけません。

ソフトウェアでのアドレス計算を、UDL側で実施したいです。

0 Kudos
EBERLAZARE_I_Intel
1,452 Views

Hi,

 

I understand the situation, I may need some time to get the answer for your case as this is seems to be an uncommon procedure.

 

I will dig in some more information.

 

Regards.

0 Kudos
EBERLAZARE_I_Intel
1,453 Views

Hi,

 

DMA controller is needed are you having issue adding the DMA controller? Unfortunately, we do not have example designs for this.

孝東000
Beginner
1,452 Views

ご返信ありがとうございました。(Thank you for your reply)

DMAコントローラーが必要な場合、自作のIP回路の外に、DMAC IP を接続するということで、了解しました。

自分で設計することに挑戦します。

ありがとうございました。

0 Kudos
Reply