Verilog Machxo 2280C上的块内存始终读取零
因此,我需要在我的定时生成器项目中使用几kB的SRAM。由于它不起作用,我决定编写一个带有一系列延迟的专用程序,一个输出字供我的逻辑分析仪捕获(直接连接到RAM_DP块的Q,沮丧的是,我将其连接如下: 我尝试过将写启用保持在高位几毫秒甚至一个周期(通过断开输出阵列并将一个位绑定到信号并用逻辑分析仪观察信号进行验证,逻辑分析仪的脉冲与预期一致)。我还验证了要写入的数据是非零的 无论我做什么,Q始终保持为零,我做错了什么?我一定很明显会错过它。代码如下:Verilog Machxo 2280C上的块内存始终读取零,verilog,fpga,Verilog,Fpga,因此,我需要在我的定时生成器项目中使用几kB的SRAM。由于它不起作用,我决定编写一个带有一系列延迟的专用程序,一个输出字供我的逻辑分析仪捕获(直接连接到RAM_DP块的Q,沮丧的是,我将其连接如下: 我尝试过将写启用保持在高位几毫秒甚至一个周期(通过断开输出阵列并将一个位绑定到信号并用逻辑分析仪观察信号进行验证,逻辑分析仪的脉冲与预期一致)。我还验证了要写入的数据是非零的 无论我做什么,Q始终保持为零,我做错了什么?我一定很明显会错过它。代码如下: Ram_Dq_Buffer Buffer
Ram_Dq_Buffer Buffer (sram_address,sram_address,s_write_data,s_writeEnable,osc_clck, 1'b1,1'b0,osc_clck, 1'b1,s_read_data ) ;
始终@(posedge osc_clk)
开始
if(sram\u状态==0)
开始
//初始化
s_writeEnable您似乎在一个位置使用osc_clck,在另一个位置使用osc_clk。请注意,默认情况下,Verilog会自动创建未定义的信号-这通常会产生警告,但您可以使用“default_nettype none”将其变成错误
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