2014-01-17 2 views
0

мой код выглядит, как показано нижея хочу синтезируемый код, чтобы сохранить вывод в файл в Verilog ,,,, в вершине 6 комплекта

reg [7:0] c[1:1000]; 
@(posedge clk) 
begin 
g=fopen(aa.txt,"w"); 
for(i=0;i<1000;i=i+1) 
begin 
$fdisplay(g,"%b",c[i]); end 
$fclose(g); 

, но этот код не synthesizable.i синтезируемой нужды кода.

Я использую вершину 6 комплекта

+0

Вы хотите открыть файл, написать ему и закрыть его в синтезируемом коде? Ожидаете ли вы, что это будет работать на вашем оборудовании? Или это для отладки во время моделирования? Почему вы делаете это на часах? – EML

+2

Синтезируемые аппаратные средства Verilog, то есть логические ворота и триггеры. Существует нет понятия файловой системы ** для хранения вещей или операционной системы для обработки запросов на запись файла. – Morgan

ответ

0

К сожалению, вы работаете на много высокий уровень для синтезируемого кода. Хотя теоретически возможно, чтобы инструменты отображали ваш $fwrite и достаточно хорошо знали о плате, которую вы используете, чтобы знать, как добраться до жесткого диска, связанного с ним, это не то, что происходит на практике.

Вначале чипы были настолько маленькими, что их нельзя было надеть на жесткий диск. Теперь, когда это возможно (вы можете повесить жесткий диск SATA непосредственно с FPGA, например), вам нужно будет предоставить синтезатору столько информации о вашей плате (и даже системе, поскольку она может быть подключена к ПК и должна доступ к жесткому диску через PCIe), что он все еще находится вне того, что разумно.

Извините, это невозможно.

1

Для выполнения этой задачи (сохранение содержимого массива 1000 байт в файл на каком-либо носителе) вы можете только создать экземпляр какого-либо процессора (например, MicroBlaze) в своем дизайне и связать его с на любом носителе, на котором установлена ​​ваша плата FPGA (SD, Compact Flash, SATA, IDE и т. д.) и ваш 1000-байтовый массив. Затем найдите библиотеку C для обработки некоторой файловой системы, такой как FAT, и напишите программу, которая выполняет итерацию через 1000-байтовый массив, прочитав его и используя библиотеку C для создания файла, сохраните байты, считанные из массива, и, наконец, закройте файл.

Возможно, но не только с кодом Verilog, который вы опубликовали. Вам нужно построить целый SoC в вашей FPGA, чтобы справиться с этим.

Другая возможность, а тем более ресурсоемкая, - использовать встроенные устройства на плате FPGA для отправки массива 1000 байтов через последовательный порт или USB, получить его на своем ПК и сохранить на нем.

Если вам не хватает коммуникационных устройств на вашей плате, вы даже можете создать кодировщик FSK и передать содержимое массива в виде серии тонов, например, старых модемов или даже старых компьютеров 80-х годов. Захватите данные на ПК с помощью звуковой карты и некоторого программного обеспечения для декодирования аудиосигнала. Для этого единственным ресурсом, который вам нужен, является контакт, сконфигурированный как выход, из вашей FPGA.

Смежные вопросы