verilog - Machxo 2280C 上的块内存始终读取零
问题描述
所以我的时序发生器项目需要几 kB 的 SRAM。由于它不起作用,我决定编写一个带有一堆延迟的专用程序,一个输出字供我的逻辑分析仪捕获(直接连接到 RAM_DP 块的 Q 并且沮丧地我将其连接如下: 我的RAM_DP 块
我已经尝试将写入启用保持在高电平几个毫秒甚至一个周期(通过断开我的输出阵列并将一点连接到信号并使用逻辑分析仪观察它来验证,它会按预期脉冲)。我还验证了要写入的数据非零。
不管我做什么,Q总是为零,我做错了什么?一定是很明显的东西让我想念它。下面的代码:
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_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”将其变为错误
推荐阅读
- scala - Groupby and Subtract Spark Scala
- android - 仅在 Nougat 上因层次结构视图而崩溃
- php - 本地 WordPress 站点上的 cURL 返回:错误 6(无法解析主机)
- python - 熊猫-在数据框之外的乘数系列上使用“任何”和“全部”
- javascript - 在 ace 编辑器中启用 Python 语法验证/检查器
- python - 优化哥德巴赫猜想算法
- javascript - REACT: TypeError: Cannot read property 'productID' of undefined
- php - 在 laravel 5.2 中使用单用户表进行多重身份验证
- sql - 将 varchar 值转换为 int 时转换失败
- spring-batch - Spring Batch:如何从集合中写入 csv 文件