【摘要】 本文以正弦信号发生器为例,介绍quartusii的应用,重点解释lpm_rom和signal tap ii的使用。
【关键词】 quartusii lpm_rom signaltapii 正弦信号发生器
quartusii是altera提供的fpga/cpld开发集成环境,用quartusii设计正弦信号发生器,关键涉及到quartusii的重要功能:lpm_rom和signal tap ii的使用;步骤繁杂,学生难以掌握;本文以正弦信号发生器为例,详细介绍quartusii的设计步骤,重点解释lpm_rom和signal tap ii的使用,以帮助读者深化对quartusii的学习。
一、正弦信号发生器的工作原理
正弦信号发生器的结构由3部分组成:数据计数器或地址发生器、数据rom和d/a;顶层文件singt.vhd在fpga中实现rom的地址信号发生器和正弦数据rom,rom由lpm_rom模块构成能达到最优设计; signal tap ii随设计文件一并下载到目标芯片中,用以观察目标芯片内部系统信号节点处的信息,而不影响系统的正常工作。
二、操作步骤
(一)正弦信号数据rom定制
完成波形数据rom的定制和rom中波形数据文件,即rom的初始化文件的设计。
1.设计rom初始化数据文件
初始化数据文件格式有2种:memory initialization file (.mif)格式文件,或hexadecimal (intel-format) file (.hex)格式文件。WwW.133229.CoM两个格式文件的建立方法相似:在new窗中选择“other files”项,后,选择“memory initialization file”项或“hexadecimal (intel-format) file”项,填入数据后,以.mif/.hex格式文件存盘。
2.定制rom元件(data_rom.vhd)
利用megawizard plug-in manager定制正弦信号数据rom宏功能块,并将以上的波形数据加载于此rom中。
设计步骤如下:
(1)设置megawizard plug-in manager初始对话框。在tools菜单中选择“megawizard plug-in manager”,以及“storage”项下的lpm_rom,再选“cyclone”器件和vhdl语言方式,最后设置rom文件存放的路径和文件名: g:work/cy/csingt/data_rom.vhd
(2)选择rom控制线和地址、数据线。地址与数据的位宽指定为6和8,选择地址锁存控制信号inclock,并选择数据文件data.hex,完成rom定制,即完成rom文件data_rom.vhd的生成。
(二)创建工程和编辑顶层设计文件
首先建立工作库(work library),即安排一个与此工程相关的所有文件的文件夹。
建立文件夹后将设计文件通过quartusii的文本编辑器编辑并存盘,详细步骤如下:
(1)新建一个文件夹:如:g:/work/cy/singt 。注意,文件夹名不能用中文。
(2)输入源程序:(略)
注意顶层文件singt.vhd中的元件声明语句中的端口必须与data_rom.vhd的端口一致。
(3)文件存盘:
注意存盘文件名应该与实体名一致,即singt.vhd。然后进入创建工程流程:1)选择文件夹g:/work/cy/singt;2)令singt.vhd为工程;3)加入工程的文件:singt.vhd、data_rom.vhd;4)目标芯片:“cyclone”系列;5) 具体芯片:epic3t144c8;6)仿真器和综合器是quartusii中自带的;
学生对此比较熟悉,不再详述。
(4)全程编译:(略)
(5)阅读编译报告:
逻辑单元163个;内部ram资源为512个位单元,恰好等于64个8位波形数据的大小。
(三)in-system memory content editor应用
对于cyclone/ii等系列的fpga,只要对使用的lpm_rom或lpm_ram模块适当设置,就能利用quartusii的eab/m4k在系统(in-system)读写编辑器直接通过jtag口读取或改写fpga内处于工作状态的存储器中的数据,读取过程不影响fpga的正常工作。
用法如下:
(1)打开在系统存储单元编辑窗口:(略)
(2)读取rom中的波形数据:
选择数据文件名rom4,然后“read data from in-system memory”,这些数据是在系统正常工作的情况下通过fpga的jtag口从其内部eabrom中读取的波形数据,它们应该与加载进去的文件data.hex中的数据完全相同。
(3)写数据;(略,与读取数据类似)
(4)输入输出数据文件;(略)
(四)引脚锁定、下载和硬件测试
选择gw48-sopc系统的电路模式no.5,用短路帽接插clock0为65536hz或750khz处。sopc/dsp适配板的引脚情况,通过查附录的附图7和芯片引脚对照表来确定。注意:引脚锁定后,必须再编译一次(processing start compilation),这样才能将引脚锁定信息编译进下载文件中。
(五)使用嵌入式逻辑分析仪进行实时测试
(1)打开“signaltapii file”;
(2)调入待测信号:将“instance”栏内的“auto_signaltap_0”改名为“behav1”;调入待测信号名,选择2组总线信号:计数器内部锁存器总线q1、波形数据输出端口信号总线dout;
(3)signaltapii参数设置。选中工程的主频时钟信号:clk;(behav1)组信号的数据采样深度为1k位。然后是对待观察信号的要求,设置起始触发的位置;最后是触发信号和触发方式:选择singt工程的q1[5]作为触发信号;选择上升沿触发方式:“rising edge”。即当q1[5]为上升沿时,signaltapii在clk的驱动下对sing信号组的信号进行连续或单次采样(根据设置决定)。
然后是将signaltapii文件存盘,后缀是默认的“stp”。
(4)编译下载。选择processing菜单的“start compilation”项,启动全程编译。全程编译的作用是将此signaltapii文件(核)与工程(singt)捆绑在一起综合/适配,以便一同被下载进fpga芯片中去。
(5)编程下载。编程模式为jtag模式,编程接口为byteblasterii;打开编程文件,选中singt.pof,点击下载键,编程成功后fpga将自动被epcs器件配置而进入正常工作状态。
(6)启动signaltapii进行测试与分析。 单击 “behav1”,启动signaltapii,然后点击左下脚的“data”页和全屏控制钮,这时就能在signaltapii数据窗通过jtag口观察到来自实验板上fpga内部的实时信号:数据窗的上沿坐标是采样深度的二进制位数,全程是1k位。如果要观察相应的模拟波形,右键点击dout(或q1)左侧的端口标号,在弹出的下拉栏中选择“bus display format”->“line chart”。(图略)
参考文献:
[1]潘松.黄继业编著.《eda技术实用教程第三版》.北京,科学出版社,2005,2.
[2] 潘松.黄继业编著.《eda技术与vhdl第二版》.北京,清华大学出版社,2007,1.
[3]《eda/sopc技术实验讲义》.杭州:杭州康芯电子有限公司.2006.8.