作为一个FPGA小白,本人在学习FPGA软件的过程中看到了这个例子,网上也有相关的教程,奈何实在写的不清楚,我自己花了挺久才弄懂,为了在以后学习中少走弯路,把自己学习到的做个教程吧,供同样是小白的同学进行学习,要是有写的不对的地方,还请评论区指出,大佬要是有什么建议,还请多多指教。一点一点码字截图不容易,如果对你有帮助,还请点个赞再走。话不多说,马上进入正题。
//------------------------------------- 我是分割 ----------------------------------------------//
加入IP核,用matlab的数据直接画图
1、新建Project
点击File->New Project,得到下图
点击next
一路点到底直到finish
2、新建顶层文件
点击Project-New sorce,选择Verilog Module
然后一路Next到底
3、添加IP核
点击Project-New sorce,选择IP(CORE……)这一项
点击next,等一会生成IP核选择界面
选择这个界面,点击Next-finish,得到IP核设置界面
第一页不用动,点击Next
第二页也不用动,保证Memory Type是Single Port RAM即可,点击Next
这里要根据自己的数据改变位宽和深度,例子中位宽是16、深度是1024,然后点击next
点击Load Init File加载自己的文件,如果文件的格式和基数不对,会变成红色。(具体的文件怎么改格式,稍后再讲)
点击Browse选择.coe格式的数据文件,并加载进去,如果没有问题,就这这样的颜色。
然后一路点击Next到最后一页
最后点击Generate就可以生成IP核了,生成的时间有点久。成的结果如下。
4、将生成的IP核加载到顶层文件中
选择生成的IP核,双击点开下面的CORE Generator,得到.veo文件。
中间那部分就是生成的IP核实例,将其复制、粘贴到顶层文件中。
可以看到,IP核的注释部分从上到下分别为,输入:时钟、使能信号、地址、数据;输出:输出数据,将其直接复制到顶层文件的输入输出里即可。注意中间是用逗号“,”来连接。
然后保存,顶层文件就写好了。保存后可以发现,之前生成的IP核已经在顶层文件下面了。
5、写测试文件
选择Project-New Sorce,选择Verilog Test Fixture
选择第一个,表示在这个顶层文件下的测试文件。然后一路next到底。
选择右边的这个按钮
打开测试文件
我们需要写的输入数据有如下几个(输出数据dina不用写)
(1)时钟:每隔一段时间,翻转变化一次
(2)地址:由于输入的IP核是事先用matlab生成好的是数据,因此要把数据输出出来,需要通过地址的增加来做到遍历数据。
(3)使能信号wea:这个只需要把他置0或者置1就可以起作用。
按如下代码,写好程序
前面的都不用动。然后点击保存,就完事了
6、用Modelsim仿真验证
先选择这个,注意别选其他的,否则进入modelsim后会变成高阻状态
然后在下面双击这个,就可以进入到Modelsim仿真界面了。
界面如下
有用的就这几部分,点击run-all也就最右边这个按钮
让他跑一阵子以后点击stop按钮停下。
此时的图没什么变化,这是因为时间间隔太大了,要缩小一点,ctrl+鼠标滚轮把时间间隔缩小,即可得到下图。
那么如何才能看到正弦波呢?先用鼠标选中你的输出数据变量douta
点击右键,这里面有两个重要的选项
这里的Radix是选择选中的数据是几进制的,第一个是符号、第二个是二进制以此类推,在这里我们选择第一个,即符号。
Format是选择画图的,一般我们选择Analog(automatic)即可自动画图了。点击以后就是这个样子的
此时的输出数据已经画了正弦波,但是时间间隔还是太大,我们继续缩小间隔。即可得到正弦波的图了。
7、加入正确的.coe文件
【接上面第3点部分,如何加入.coe文件的正确格式】
跑出来的.txt结果是这样的
需要把前面的空格去掉,先选中空格,点击“编辑”-“替换,选择为逗号。
在最前面加上那两句,最后面加上冒号,并把第一个逗号去掉,最终结果如下,
然后就可以得到正确格式的.coe文件了。注意这个文件的深度和之前我们设置的1024的深度要是一样的,不然会报错。
码字不易,麻烦点个赞哟~~