SOPC - EDA实验讲义 - GW48-PK2 - 图文(3)

2020-04-14 03:12

2.5 存储示波器设计

存储示波器完整程序示例,光盘.\\cyclone_1k30_demo\\ep1k30_adda\\reserv_scope\\reserv.vhd ; 演示方法参考该路径readme。注意:对于GWAC3板,用QuartusII打开工程目录:.\\cyclone_1k30_demo\\ep1c3_adda\\logic_synsz\\reserv.vhd ;

第三章 Quartus II设计正弦信号发生器

Quartus II设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。QuartusII与MATLAB和DSP Builder结合可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具,与SOPC Builder结合,可实现SOPC系统开发。本章将以正弦信号发生器设计示例详细介绍QuartusII的使用方法。

注意,以下各软件对计算机的要求是:奔腾4或以上主机,大于等于256M内存。

3.1 顶层VHDL文件设计

3.1.1 创建工程和编辑设计文件

本节通过正弦信号发生器的设计对QuartusII的一些重要功能作一些说明。对本节的详细了解有利于对以后章节有关DSP Builder的应用和设计有更好的理解。正弦信号发生器的结构由3部分组成(图3-1):数据计数器或地址发生器、数据ROM和D/A。性能良好的正弦信号发生器的设计要求此3部分具有高速性能,且数据ROM在高速条件下,占用最少的逻辑资源,设计流程最便捷,波形数据获最方便。图3-1所示是此信号发生器结构图,顶层文件SINGT.VHD在FPGA中实现,包含2个部分:ROM的地址信号发生器由5位计数器担任,和正弦数据ROM,拒此,ROM由LPM_ROM模块构成能达到最优设计,LPM_ROM底层是FPGA中的EAB或ESB等。地址发生器的时钟CLK的输入频率f0与每周期的波形数据点数(在此选择64点),以及D/A输出的频率f的关系是: f = f0 /64

首先建立工作库,以便设计工程项目的存储。任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹,此文件夹将被EDA软件默认为工作库(Work Library)。

在建立了文件夹后就可以将设计文件通过QuartusII的文本编辑器编辑并存盘,详细步骤如下:

1、 新建一个文件夹。利用资源管理器,新建一个文件夹,如:e : \\SIN_GNT 。注意,文件夹名不能用中文。 2、输入源程序。打开QuartusII,选择菜单“File”?“New”,在New窗中的“Device Design Files”中选择编译文件的语言类型,这里选“VHDL Files”(如图3-2所示)。然后在VHDL文本编译窗中键入如图3-3所示的VHDL程序。

图3-1 正弦信号发生器结构图 图3-2 选择编辑文件的语言类型

图3-3编辑输入设计文件(顶层设计文件SINGT.VHD)

11

图3-4利用“New Preject Wizard”创建工程 图3-5将所有相关的文件都加入进此工程

3、文件存盘。选择“File”?“Save As”,找到已设立的文件夹e : \\SIN_GNT ,存盘文件名应该与实体名一致,即singt.vhd。当出现问句“Do you want to create…”时,若选“否”,可按以下的方法进入创建工程流程;若选“是”,则直接进入创建工程流程,创建工程流程如下:

3.1.2 创建工程

在此要利用“New Preject Wizard”创建此设计工程,即令singt.vhd为工程,并设定此工程一些相关的信息,如工程名、目标器件、综合器、访真器等。步骤如下:

1、建立新工程管理窗。选择菜单“File”?“New Preject Wizard”,即弹出工程设置对话框(图3-4)。点击此框最上一栏右侧的按钮“…”,找到文件夹e : \\SIN_GNT ,选中已存盘的文件singt.vhd(一般应该设定顶层设计文件为工程),再点击“打开”,即出现如图3-4所示设置情况。其中第一行表示工程所在的工作库文件夹;第二行表示此项工程的工程名,此工程名可以取任何其它的名,通常直接用顶层文件的实体名作为工程名,第三行是顶层文件的实体名。

2、将设计文件加入工程中。然后点击下方的“Next” 按钮,在弹出的对话框中点击“File”栏的按钮,将此工程相关的所有VHDL文件加入进此工程(如果有的话),即得到如图3-5所示的情况。工程的文件加入的方法有两种:第1种是点击右边的“Add All”按钮,将设定的工程目录中的所有VHD文件加入到工程文件栏中;第2种方法是点击“…”按钮,从工程目录中选出相关的VHDL文件。

3、选择仿真器和综合器类型。点击图3-5的“Next”按钮,这时弹出的窗是选择仿真器和综合器类型的,如果都是选默认的“NONE”,表示都选QuartusII中自带的仿真器和综合器,因此,在此都选默认项“NONE”。

4、选择目标芯片。再次点击“Next”,选择目标芯片。首先在“Family”栏选芯片系列,在此选“Cyclone”系列,并在此栏下选“Yes”,即选择一确定目标器件。再按键“Next”,选择此系列的具体芯片:EPIC6Q240C8(图3-6),按键“Next”后,弹出工程设置统计窗口,以上列出了此项工程的相关设置情况。

5、结束设置。最后按键“Finish”,即已设定好此工程(图3-7),此工程管理窗主要显示工程项目的层次结构。

图3-6选择此系列的具体芯片 图3-7 SINGT的工程管理窗 图3-8 选定目标器件

3.1.3 编译前设置

在对工程进行编译处理前,必须作好必要的设置。具体步骤如下:

1、选择目标芯片。目标芯片的选择也可以这样来实现:选择“Assignmemts”菜单中的“settings”项,在弹出的对话框中选“Compiler Settings” 项下的Device,首先选目标芯片:EPIC6Q240C8(此芯片已在建立工程时选定了),也可以在(图3-8)“Available devices”栏分别选“Package”:PQFP;“Pin count”:240;“Speed”:8,来选芯片。

2、选择目标器件编程配置方式。由图3-8中的按钮“Device & Pin Options”进入选择窗,首先选择“Configuration”项,在此框的下方有相应的说明,在此可选Configuration方式为Active Serial,这种方式指对专用配置器件进行配置用的编程方式,而PC机对此FPGA的直接配置方式都是JTAG方式。“Configuration device”项,选择配置器为EPCS1或EPCS4(根据实验系统上目标器件配置的EPCS芯片决定如图3-9所示)。

12

3、选择输出配置。在图3-9窗的“Programming Files”窗,可以选Hexadecimal(Intel-Format)output File,即产生下载文件的同时,产生2进制16进制配置文件fraqtest.hexout,可用于单片机与EPROM构成的FPGA配置电路系统。

图3-9 选择配置器件和配置方式 图3-10 输出文件.hexout设置

3.1.4 编译及了解编译结果

QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错,逻辑综合和结构综合。即将设计项目适配进FPGA/CPLD目标器中,同时产生多种用途的输出文件,如功能和时序仿真文件,器件编程的目标文件等。编译器首先从工程设计文件间的层次结构描述中提取信息,包括每个低层次文件中的错误信息,供设计者排除,然后将这些层次构建产生一个结构化的以网表文件表达的电路原理图文件,并把各层次中所有的文件结合成一个数据包,以便更有效地处理。下面首先选择Processing菜单的“Start Compilation”项,启动全程编译。注意这里所谓的编译(Compilation)包括QuartusII对设计输入的多项处理操作,其中包括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。如果工程中的文件有错误,在下方的Processing处理栏中会显示出来。对于Processing栏显示出的语句格式错误,可双击此条文,即弹出vhdl文件,在闪动的光标处(或附近)可发现文件中的错误。再次进行编译直至排除所有错误。我们会发现在Processing处理栏,编译后出现如下错误信息: Error:Node instance u1 instabtiates undefined entity DATAROM

原因是在图3-3所示的主程序中的“DATAROM”元件是空的,因为我们还没有设计此元件对应的文件:DATAROM.VHD。

3.2 正弦信号数据ROM定制

为了解决以上出现的问题,以下要完成波形数据ROM的定制和ROM中波形数据文件,即ROM的初始化文件的设计。 3.2.1 设计ROM初始化数据文件。 以下介绍生成初始化数据文件的4种方法。初始化数据文件格式有2种:Memory Initialization File (.mif)格式文件,或Hexadecimal (Intel-Format) File (.hex)格式。以下以64点正弦波形数据为例分别说明:

1、建立.mif格式文件。首先选择ROM数据文件编辑窗,即在File 菜单中选择“New”,并在New窗中选择“Other files”项,并选“Memory Initialization File”(图3-11),点击OK后产生ROM数据文件大小选择窗。这里采用64点8位数据的情况,可选ROM的数据数Number为64,数据宽Word size取8位。点击“OK”,将出现如图3-12的空的mif数据表格,表格中的数据为10进制表达方式,任一数据(如第三行的99)对应的地址为左列于顶行数之和)。将波形数据填入此表中,完成后在File菜单中点击“Save as”,保存此数据文件,在这里不妨取名为.romd.mif。

2、建立.hex格式文件。建立.hex格式文件的文件有两种方法,第一种方法与以上介绍的方法相同,只是在New窗中选择“Other files”项,后,选择“Hexadecimal (Intel-Format) File”项,最后存盘.hex格式文件。第二种方法是普通单片机编译器来产生。方法是利用汇编程序编辑器将此64个数据编辑于如图3-13所示的编辑窗中,然后用单片机ASM编译器产生.hex格式文件。在此不妨取名为SIND1.asm,编译后得到SIND1.hex文件,现将sind1.hex或romd.mif文件都存到e:\\sin_gnt\\asm\\文件夹中,备用。注意,此类文件必须放在当前目录的高一层次目录中:\\sin_gnt\\asm\\!

图3-11进入mif文件编辑窗 图3-12将波形数据填入mif文件表中 图3-13 ASM格式建hex文件

13

图3-14定制新的宏功能块 3-15 LPM_ROM宏功能块设定

图3-16 选择DATAROM模块数据线和地址线宽度 图3-17选择地址所存信号inclock 图3-18选择数据文件

图3-19 调入ROM初始化数据文件 图3-20 修改数据路径和后缀

3、另两种方法要快捷的多,可分别用C程序生成同样格式的初始化文件(参考《EDA技术实用教程第12章》),和使用后面将介绍的DSP Builder/MATLAB的工具来生成。

3.2.2 定制ROM元件(DATAROM.VHD)

利用MegaWizard Plug-In Manager定制正弦信号数据ROM步骤如下: 1、设置MegaWizard Plug-In Manager初始对话框。在Tools菜单中选择“MegaWizard Plug-In Manager”,产生图3-14的界面,选择“Create a new custom…”项,即定制一个新的模块。点击“Next”后,产生图3-15对话框,在左栏选择“Storage”项下的LPM_ROM,再选“Cyclone”器件和VHDL语言方式,最后键入ROM文件存放的路径和文件名:e:\\sin_gnt\\asm\\datarom.vhd,点击“Next”。

2、选择ROM控制线和地址、数据线。在图3-16,17所示的对话框中选择地址与数据的位宽分别为6和8,选择地址所存控制信号inclock,并选择数据文件sind1.hex(图3-18,19)。最后完成ROM文件DATAROM.vhd的生成。然后打开此文件DATAROM.vhd,可以看到其中调用初始化数据的语句(图3-20):init_file => \,由于QartusII的原因,必须修改此路径为:init_file => \如图3-20所示。

注意,与mif文件不同,hex文件必须放在当前工程的子目录中(这里的子目录是asm),而DATAROM.vhd与顶层工程文件SINGT.VHD在同一文件夹中!且后缀hex必须小写!

3、测试ROM模块。由于此时QuartusII的工程设置在顶层文件(图3-3),现在启动全程编译:选择Processing菜

14

单的“Start Compilation”项。此时将不会出现前面的错误信息。但应该注意,如果编译进程信息出现警告语句:“Warning:Can’t find Memory Initialization…”,说明DATAROM中未能调入初始化文件的波形数据。文件调用语句路径是否正确。

4、阅读编译报告。编译成功后,观察编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析。最下栏是编译处理信息;右栏是编译报告,这可以在Processing菜单项的“Compilation Report”处见到。编译后的统计报告显示,逻辑宏单元LCs用了6个;内部RAM资源为512个位单元,恰好等于64个8位波形数据的大小。

3.2.3 仿真

仿真就是对设计项目进行一项全面彻底的测试,以确保设计项目的功能和时序特性,以及最后的硬件器件的功能与原设计相吻合。仿真操作前必须利用QuartusII的波形编辑器建立一个矢量波形文件以作仿真激励。VWF文件将仿真输入矢量和仿真输出描述成为一波形的图形来实现仿真。QuartusII允许对整个设计项目进行仿真测试,也可以对该设计中的任何子模块进行仿真测试。方法是设定为“Simulation focus”。仿真设定单元(Simulation Settings)允许设计者指定该模块的仿真类型,仿真覆盖的时序和矢量激励源等。Time/Vectors仿真参数设定窗允许设定仿真时间区域,以及矢量激励源。对工程的编译通过后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。步骤如下:

1、打开波形编辑器。选择菜单File中的New项,在New窗中选“Other Files”中的“Vector Waveform File”(图3-11),点击OK,即出现空白的波形编辑器(图3-21)。

图3-21 波形编辑器图和通过波形编辑器输入信号节点

2、设置仿真时间区域。为了使仿真时间轴设置在一个合理的时间区域上,在Edit菜单中选择“End Time”项,在弹出的窗中的“Time”窗中键入50,单位选“us”,即整个仿真域的时间即设定为50微秒,点击OK,结束设置。

3、存盘波形文件。选择File中的“Save as”,将以名为cnt4b.vwf(默认名)的波形文件存入文件夹e:\\sin_gnt\\中。 4、输入信号节点。将计数器计的端口信号节点选入此波形编辑器中。方法是首先选View 菜单中的“Utility Windows”项的“Node Finder”选项。其对话框如图3-21所示,在Filter框中选Pins : all,然后点击“List”钮。于是在下方的“Nodes Found”窗中出现了设计中的singt工程的所有端口引脚名(如果此对话框中的“List”不显示,需要重新编译一次,即选Processing? Start Compilation,然后再重复以上操作过程)。用鼠标将重要的端口节点CLK和输出总线信号DOUT都拖到波形编辑窗,点击波形窗左侧的全屏显示钮,使全屏显示,并点击放大缩小钮后,用鼠标在波形编辑区域右键点击,使仿真坐标处于适当位置(图3-21)。

5、编辑输入波形(输入激励信号)。点击时钟名CLK,使之变兰色,再点击左列的时钟设置键,在Clock窗中设置CLK的周期为3us(图3-22);所示的Clock窗中的“Duty cycle”是占空比,可选50,即50%占空比,再对文件存盘。

图3-22选择时钟周期和占空比 图3-23 设置仿真信号数据格式

6、总线数据格式设置。如果点击如图3-22所示的输出信号“DOUT”左旁的“+”,则将展开此总线中的所有信号;如果双击此“+”号左旁的信号标记,将弹出对该信号数据格式设置的对话框(图3-23)。在该对话框的“Radix”栏有4

15


SOPC - EDA实验讲义 - GW48-PK2 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:英美文化与国家概况教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: