谈QuartusI在教学中的应用

时间:2020-10-06 13:36:54 计算机毕业论文 我要投稿

谈QuartusI在教学中的应用

摘要: 本文以正弦信号发生器为例,介绍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)格式文件。两个格式文件的建立方法相似:在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中的数据完全相同。