我的代码如下所示
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);
但是这段代码不是可合成的。我需要一个可综合的代码。
我正在使用顶点6套件
答案 0 :(得分:1)
要完成此任务(将1000字节数组的内容保存到某些存储介质中的文件),您只能在设计中实例化某种处理器(例如MicroBlaze),并将其与任何接口连接您的FPGA板具有的介质(SD,Compact Flash,SATA,IDE等)和1000字节阵列。然后,搜索一个C库来处理FAT等文件系统,编写一个遍历1000字节数组的程序,读取它并使用C库创建一个文件,存储从数组中读取的字节,最后关闭文件。
这是可能的,但不仅仅是你发布的Verilog代码。您需要在FPGA中构建一个完整的SoC来处理它。
另一种可能性,即资源要求更低,是使用FPGA板中的内置器件通过串行端口或USB发送1000字节阵列,在PC中接收并从那里保存到磁盘。
如果您的主板上缺少通信设备,您甚至可以构建FSK编码器,并将数组内容作为一系列音调传输,如旧调制解调器甚至旧80的计算机。使用声卡和某些软件捕获PC中的数据以解码音频信号。为此,您需要的唯一资源是从FPGA配置为输出的引脚。
答案 1 :(得分:0)
不幸的是,您在可合成代码的高水平运行。虽然理论上可以让工具看到你的$fwrite
,并且对你正在使用的电路板有足够的了解如何获得连接到它的硬盘,但实际情况并非如此。
最初,芯片非常小,以至于将硬盘悬挂起来是不可想象的。现在可以想象(例如,您可以直接将SATA硬盘挂在FPGA上),您必须向合成器提供有关您的电路板(实际上是系统)的大量信息,因为它可能插入PC并需要通过PCIe访问硬盘,它仍然超出了合理范围。
抱歉,这是不可能的。