问题描述
因此,我的时序发生器项目中需要几kB的SRAM。由于它无法正常工作,我决定编写一个带有延迟的专用程序,供我的逻辑分析仪捕获一个输出字(直接连接到RAM_DP块的Q,无奈之下,我将其接线如下: My RAM_DP block
我尝试将写使能保持高电平一段时间,甚至只是一个周期(通过断开我的输出阵列并将其与信号捆绑在一起,并使用逻辑分析仪观察该信号,以期望的方式进行验证)。我还验证了要写入的数据非零。
无论我做什么,Q始终为零,我在做什么错?我一定很想念它。下面的代码:
Ram_Dq_Buffer Buffer (sram_address,sram_address,s_write_data,s_writeEnable,osc_clck,1'b1,1'b0,s_read_data ) ;
总是@(posedge osc_clk) 开始
if (sram_state==0)
begin
//Initialize
s_writeEnable<=0;
//sram_Clock_EN <=1;
//sram_reset <=0;
sram_address<=511;
delay<=0;
sram_state<=1;
counter<=counter+1;
s_write_data<=counter;
end
if (sram_state==1)
begin
delay<=delay+1;
if (delay>20000)
begin
delay<=0;
sram_state<=2;
end
end
if (sram_state==2)
begin
s_writeEnable<=1;
delay<=delay+1;
if (delay>20000)
begin
delay<=0;
sram_state<=3;
end
end
if (sram_state==3)
begin
s_writeEnable<=0;
delay<=delay+1;
if (delay>20000)
begin
delay<=0;
sram_state<=4;
end
end
if (sram_state==4)
begin
delay<=delay+1;
if (delay>20000)
begin
delay<=0;
sram_state<=0;
mydata<=s_read_data;
end
end
end
我正在使用内部振荡器进行测试;大约20MHz的时钟,但该时间似乎在允许的时间范围内。我已经检查了IP Express生成的块,这看起来还不错。
解决方法
您似乎在一处使用osc_clck,在另一处使用osc_clk。注意,默认情况下,Verilog会自动创建未定义的信号-通常会产生警告,但是您可以使用“`default_nettype none”将其变为错误