FPGA学习日志——SDRAM读写数据

本文记录了作者在2021年2月3日至5日期间遇到的FPGA学习问题及解决办法,包括索引标签超出数组字面量范围、状态机计数条件不符以及引脚分配问题,并分享了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FPGA学习日志

鼓励自己每天进行学习总结:2021.2.3 - 2021.2.5



前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


遇到的问题

1.out of range index label for array literal

报错信息:超出数组字面量的索引标签范围
在这里插入图片描述
报错原因:
没有写上索引的数组名称,还用错了括号

处理方法:
在这里插入图片描述

2.明明符合add_cnt条件,但cnt却不往上加

assign add_cnt = state == S_INIT_TRP || S_INIT_TRF1 || S_INIT_TRF2 || S_INIT_TMRD || S_TRFC || S_TRCD || S_CL || S_RD || S_WD || S_WWAIT);

错误原因:
add_cnt条件没写对

处理方法

assign add_cnt = (state == S_INIT_TRP )||(state ==  S_INIT_TRF1) 
                ||(state == S_INIT_TRF2 )||(state == S_INIT_TMRD)
                ||(state == S_TRFC )||(state == S_TRCD) 
                ||(state == S_CL )||(state == S_RD )
                ||(state == S_WD )||(state == S_WWAIT);
                

3. 无法将多个引脚分配到Pin_F16这个管脚上

错误原因:
这个引脚主要用于链式系统中,即当一个系统(单板)上有多个FPGA器件,使用一个JTAG链配置时,该引脚主要用于器件的级联控制。如果在只需要配置一个器件的系统中,则该引脚可以设置为悬空或者在器件完成配置后作为普通用户IO使用。

处理方法:
assignments>device>device and pin options>dual-purpose pins里面把nCEO设置成use as regular i/o就可以了


总结

  • 源代码的各个NOP的end_cnt都没有“-1”

  • 源代码在初始化完成后,即在S_IDLE的下一个周期插入了一个auto refresh指令,引入了“sdram_ref_req”和“sdram_ref_ack”

  • 源代码的状态切换比该状态的任务模块快了一个时钟周期,做法是用时序写任务模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值