我正在尝试实现一个简单的乘数。我有一个文本文件,其中有两列。我将第1列乘以第2列。这是Verilog中的代码:
module File_read(
input clk
);
reg [21:0] captured_data[0:10];
reg [21:0] a[0:8];
reg [21:0] b[0:8];
reg [43:0] product[0:5];
`define NULL 0
integer n=0;
integer i=0;
initial
$readmemh("abc.txt",captured_data);
always @(posedge clk) begin
product[i]<=captured_data[n]*captured_data[n+1];
n<=n+2;
i<=i+1;
end
endmodule
我有XilinxSpartan®-6 LX45 FPGA板。它提供128M bit ddr2 ram和16Mbyte x4 SPI Flash,用于配置和配置。数据存储。
现在我想将我的文件存储到FPGA板中。那我该怎么做呢?我是否必须使用IP核来访问内存或任何其他来源?
P.S:这是我第一次,我在FPGA上存储任何内容。
问候!
AWAIS
答案 0 :(得分:1)
首先不要使用DDR或闪存,除非你真的需要它们。您的FPGA有足够的BlockRAM来为您的乘法器存储数千个参数。
一种简单的方法是实例化2个BlockRAM,并在编译时使用文件中的数据加载它们。 Xilinx提供了像data2mem这样的工具来实现这一目标。
或者,您可以使用以太网或UART连接将测试数据发送到您的设计中。
解决方案1:通用VHDL描述。
type T_RAM is array(LINES - 1 downto 0) of std_logic_vector(BITS-1 downto 0);
signal ram : T_RAM;
begin
process (Clock)
begin
if rising_edge(Clock) then
if (WriteEnable = '1') then
ram(to_integer(WriteAddress)) <= d;
end if;
q <= ram(to_integer(ReadAddress));
end if;
end process;
解决方案2:IPCore生成器有一个向导来创建BlockRAM并分配外部文件。
解决方案3:手动实例化BlockRAM宏。每个FPGA系列都附带支持宏的HDL库指南。例如,Virtex-5在第311页上有一个RAMB36宏。
here描述了BlockRAM与data2MEM和* .bmm(BlockRAM内存映射)文件的使用。