Quartus内部存储器和逻辑分析仪配合调试

     最近调试了一下FPGA程序中一个数字电位器模块,FPGA向数字电位器写数据,电位器输出一定范围的电压,以替换PCB板子上面的可调电阻,实现软件调节电位。本来我主要做DSP的,但是一般我们的板子上都是DSP+FPGA,所以需要能看懂FPGA代码,与FPGA进行通信,有时还需要自己修改FPGA代码,因此也不得不学习一些FPGA编程调试的知识。

    用过FPGA的一般都知道Quartus软件仿真和硬件仿真,软件仿真可以使用波形仿真,包括时序和功能仿真,也可以使用Modesim编写激励文件进行仿真;硬件仿真的话就要用到SignalTap II Logical Analyzer内部逻辑分析仪,但是使用In-System Memory内部存储器的却很少,但是我们进行模块调试的时候却很有用。

    首还是要将FPGA工程编译好,要调试某一个某块的时候,模块的符号添加到顶层原理图文件,将模块的一般输入先接好,比如时钟Clk、复位nRst,将其他的输入如使能en、数据datain、地址addr、控制信号分别接到不同的内部存储器模块,然后将所有要观察的信号添加到SignalTap中去,这样仿真的时候可以实时改变内部存储器,来改变模块的输入,通过内逻观察是否正确,以达到硬件调试的目的。

    创建内部存储器,在Quartus中双击原理图空白位置或通过菜单打开MegaWizard Plug-In Manager向导,libraries中选择安装文件下megafunctions -> gates -> lmp_constant,设置模块名字、数据位数,添加信号名字来创建一个新的存储器模块。如果在工程中使用了不止一个lmp_constant需要设置信号名字以区分不同的信号,方便SignalTap观察。

    添加内部存储器,打开向导将刚才创建的存储器模块添加到工程,连接到对应的引脚上,如果需要多个内部存储器则每一个都要先创建一个模块然后添加到工程,即使数据位宽相同也不能使用一样的模块,因为相同的模块修改的时候会一起被修改的。

    编译好程序,然后添加SignalTap文件,设置好观察信号、采样时钟、触发条件数、然后在编译一次。

    打开SignalTap逻辑分析仪,设置好触发条件,将程序下载到FPGA中去,点击开始分析运行。

    使用内部存储器,在Quartus界面点击菜单Tool -> In-System Memory Content Editor打开内部存储器编辑器,设置Hardware,选择sof文件将文件下载到FPGA中去,可以看到工程中使用的内部存储器模块都添加进来了,修改某个信号的数据,然后点击下载将数据更新到FPGA中去,数据的颜色变成红色则表示数据已经更新到FPGA中去了,若仍为蓝色表示数据还没有更新到FPGA中去。每次修改模块数据的时候一次只能修改一个信号的数据,下载到FPGA中去了之后才能在修改下一个数据,否则会出现数据无法更新到FPAG中去的情况,点击了下载但是数据的颜色就是不变成红色。每次更新的内部存储器的数据可以使用SignalTap观察信号的变化。

    使用内部存储器的好处是可以单独调试FPGA模块,调好了每个模块之后在一起和DSP联合测试,还可以在调试过程中实时修改数据,不需修改FPGA代码在编译下载程序。

    使用软件为Quartus 12.0, 硬件为Cyclone IV, 其他版本的软件或硬件应该也支持的。

你可能感兴趣的:(Quartus软件)