Как я могу написать свою программу на C в двух функциях? - PullRequest
0 голосов
/ 04 мая 2018

Мне было интересно, как я могу написать свой код C (всего один .c с парой разных функций) в две функции с входами и выходами. Я ищу их, потому что я собираюсь поместить две части своего кода в ЦП, а другую оставить в ПЛИС, чтобы они могли общаться друг с другом через интерфейс в плате семейства Zynq (например, ZC706).

В этом отношении через Hiv Vivado мне нужно иметь только одну единственную функцию, которую можно преобразовать, например, в. VHDL через Vivado HLS и другие функции могут оставаться в CPU.

Заранее спасибо и при необходимости можете поделиться своим кодом.

1 Ответ

0 голосов
/ 07 мая 2018

Совсем нет!

В FPGA нет pthreads или функций. Вы должны думать, что FPGA больше похожа на схему. Есть физические соединения, такие как провода. Внутренне, особенно в семействе Zynq, вы можете общаться через RAM, контроллеры DMA или через регистры. Есть документация от Xilinx, вам нужен AXI / AXI Stream.

Но то, что вы хотите сделать, это написать любой код C и запустить его в области FPGA, как в процессоре. И такой подход не перспективен.

В Vivado HLS вы можете писать «функции» на C / C ++ / OpenCL / SystemC, но это только блок с входами и выходами, переведенными на язык описания оборудования (VHDL / Verilog). Вы должны экспортировать его и добавить в свой проект Vivado, чтобы использовать его. На данный момент, возможно, ваш IP, созданный в HLS, будет делать то, что вы ожидаете, но еще предстоит много работы, чтобы правильно подключить порты.

Мой совет - познакомьтесь с семейством Zynq и особенно с протоколом AXI. Если вы знакомы с DMA / AXI4 / AXI4S и как получить к ним доступ из ARM и Logic, тогда начните использовать HLS. В противном случае у вас не возникнет чувства, как писать код, понятный HLS.

...