下面是RAM模块,我希望读取系数值。
x="JH QS KC 10D AC 3H 10S"
import re
print [i for i in x.split() if re.findall(r"(?<!\d)10(?!\d)",i)]
发出警告并坚持到这一点 - &gt;
警告:Xst:653 - 信号&lt; mem&gt;使用但从未分配。此无源信号将自动连接到值0000000000000000。
请指导我如何解决此问题。
答案 0 :(得分:1)
你永远不会在RAM上写任何新内容,因此symthesis工具会对此发出警告并将此RAM视为ROM。
这部分代码:
always @(posedge clk) begin
if (we)
data_out <= mem[address];
end
当我们为1时读取当前内存地址。我假设你想在1时写入内存,所以它应该是这样的:
always @(posedge clk) begin
if (we)
mem[address] <= data_in;
data_out <= mem[address];
end
将data_in
输入端口包含要写入内存的数据。注意写操作后的时钟周期,data_out
仍将具有旧的存储器内容。要在执行写入时更新data_out
,请执行以下操作:
always @(posedge clk) begin
if (we) begin
mem[address] <= data_in;
data_out <= data_in;
end
else
data_out <= mem[address];
end
您的模块当前没有data_in
端口,因此它描述了ROM而不是RAM,并且在ROM中,此警告是无害的。