有关DDS在Gowin上的创建、编写、综合、仿真、上板已经在前两篇博客中详细写道
附上链接:
基于FPGA的DDS在Gowin和combat开发板的实现(一)
基于FPGA的DDS在Gowin和combat开发板的实现(二)
下面就读者在此过程中的注意事项以及可能出现的问题做个汇总,若有不足之处,还望指出!
目录
一、IP核的建立
1. 数据文件导入
在gowin云源ip核中导入的初始化文件可以是二进制、十六进制或带地址十六进制格式
此处我们导入的初始化文件为16进制(Hex file),需要在.mi文件加上如下三行代码方能识别
#File_format=Hex
#Address_depth=1024
#Data_width=12
生成.mi文件的matlab程序在上面链接中已写有,若读者要加入自己编写的.mi,要做如下修改:
二进制File_format=Bin
带地址十六进制格式File_format=AddrHex
值得注意的是,gowin软件所导入.mi文件中数据的位数必须严格相同,若出现如下情况
那么生成ip core的时候就会报错,必须在前面补零才行
2. 地址深度和位宽
Depth和Width的数值要与.mi文件中一致,不然可能会出现以下问题
(Gowin软件中的Depth设置与vivado不同,在vivado的配置中应为10,但在gowin中要写1024)
3. Module Name
ip core建好后会出现如下文件
我们需要在自己的程序中按照此格式修改例化部分的Module和ip core建立时的命名一致,并且名称要用大写,不然虽能综合成功,但数据可能不会被读入
正确格式:
4. File Name
由于本工程中要建立四个ip core,在建立时不要忘记修改file name的命名,否则会将之前建立好的部分覆盖掉
二、布局布线
在gowin中添加DDS.v和DDS_tb.v后编译成功后需进行布线,可以直接在FloorPlanner中分配管脚(如下界面),熟练之后可以添加.cst文件敲代码
此处为方便读者省去查管脚的工作,我们已经把.cst的代码贴了上去,读者按照前面步骤进行即可。但在Place&Route过程中可能出现如下错误
是因为顶层文件设置问题,管脚配置显示的是tb文件的,导致找不到管脚
解决方法:将tb文件右键Disable或直接删除(仿真时直接在modelsim中添加即可)
三、Gowin&Modelsim仿真
在modelsim中导入文件之后compile时可能会出现如下问题,这就是我们之前提到的例化的Module与ip core建立中的命名不一致,在程序中修改即可
若读者在操作过程中出现其他问题,可以在此提问补充!