Machxo 2280C上的块存储器始终读取零

问题描述

因此,我的时序发生器项目中需要几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”将其变为错误