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”
-
源代码的状态切换比该状态的任务模块快了一个时钟周期,做法是用时序写任务模块