赞
踩
A:使用modelsim与quartus联合仿真
可参考:
B:使用VScode作为文本编译器
可参考:
用VSCode编辑verilog代码、iverilog编译、自动例化、自动补全、自动格式化等常用插件 - 知乎------------2020.12.24------------windows10------------ 绪论一个好用的编辑器,就好比斧头之于伐木工,锋利的、自动化的,能极大的提高工作效率。能编辑verilog代码的工具有很多:notepad++、Sublime、VSCode…https://zhuanlan.zhihu.com/p/338497672总结:安装vscode,完成配置,vscode中添加必要插件(语法高亮,自动例化,代码补全等插件较为重要),使用vscode写代码即可。另:copilot可以明显提升代码补全的效率,虽然有时候补全的东西需要修改,但是copilot仍然是一个很好的选择。
C:signaltap的使用
可参考:
SignalTap II——基本使用和高级技巧 - 咸鱼FPGA - 博客园本文以4个led灯闪烁,来介绍 SignalTap II 的使用。 一、Verilog案例 led灯以1秒的时间循环左移,代码如下: 1 module led 2 // < 参数 > 3 https://www.cnblogs.com/xianyufpga/p/12323021.html总结:modelsim仿真完成后,配置好signaltap,观察上电后各节点的工作是否正确,这是重要的验证过程。
D:开发过程小总结
a.功能分析,划分模块
b.分别用代码实现每个模块并编译解决语法等基础错误
c.modelsim仿真,调试至功能正确
d.根据FPGA芯片文档分配管脚,约束时序并全编译
e.signaltap上电验证
A:(*KEEP=“TRUE”)可以使语句不会被综合掉
B:仿真未报错,但是结果与预期不符,检查是否仿真时间不足以观察到结果。
C:modelsim仿真时除了顶层模块和Testbench外,记得添加调用的子模块,尤其是使用了IP核的情况,记得添加进去。
D:声明变量时注意位宽,尤其时写Testbench或top时,对子模块进行例化声明变量时要注意位宽。
E:关注wire型变量的物理含义,当某个变量仿真结果为HZ时,此端口可能被综合,也可能不存在。
F:注意使能信号是高电平使能还是低电平使能。
G:模块变量声明和例化模块时,最后一位末尾没有 “,” (逗号)。在修改端口的时候记得检查此类问题。
H:由于quartus版本原因,IP核的配置无法打开,这是intel和altera的问题。
可参考:
解决 Quartus Prime 18.0 编译之后打不开PLL Megawizard 的问题_ShareWow丶的博客-CSDN博客解决 Quartus Prime 18.0 编译之后打不开PLL Megawizard 的问题Background不多说,使用Quartus II 13.0 的工程 挪到 Quartus Prime 18.0 下编译之后,在Project Navigator中 的Hierachy下,不能双击IP核打开 Megawizardhttps://blog.csdn.net/sinat_31206523/article/details/86748556I:针对综合出不需要的latch的情况,画一画条件分支的图,检查if,case等条件语句是否赋值不完备。
J:always块中敏感信号未用到,有可能会产生latch。
K:使用modelsim仿真时,自己的工程中模块名避免和modelsim 的lib里的模块名重复。
以上为工作学习过程中遇到的一些问题以及经验,希望对读者有所帮助,作者能力有限,如有错误,恳请批评指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。