2.1 软硬件平台的使用
2.1.1 基本知识点
1. FPGA开发工具软件QUARTUSII的使用方法; 2. 自制FPGA开发平台的使用; 3. 各种输入法完成设计的过程; 4. 图形输入法的注意事项和画图技巧;
2.1.2 实验设备
1. PC机一台;
2. 自制实验箱DDA-I型一台(主芯片FLEx10k20TC144-3); 3. QUARTUSII配套软件;
2.1.3 实验相关知识介绍
1.数码管显示介绍
实验箱上共有8个数码管,其中SEL7—SEL0作为数码管选择信号,ABCDEFGH依次对应7段译码器及小数点的选通信号。
图2.1.1 数码管电路图
为了节省资源,8个数码管共用8个段选择信号,在设计的时候,可以选择让sel7—sel0依次有效(sel信号低电平有效),然后对应的每个sel,ABCDEFGH有其相应的值(段选择信号高电平有效),只要扫描频率足够大,由于人眼的视觉暂留,会感觉8个数码管同时亮着,且每个数码管显示的值互相不干扰。段选信号ABCDEFGH排列如下:
1
章名
图2.1.2 数码管的段选排列图
如某时刻sel0的值为0,ABCDEFGH的值为00001100,则最右边数码管显示的值为“1”。
2.QuartusII的文件管理
Quartus II是一款功能强大的EDA软件。在这个集成开发环境中,PLD使用者可以完成编辑、编译、仿真、综合、布局布线、时序分析、生成编程文件、编程等全套PLD开发流程。Quartus II以工程(Project)为单位管理文件。保证了设计文件的独立性和完整性。由于Quartus II功能众多,每一项功能都对应一个甚至多个文件类型。在使用中,如果需要转移或备份某一工程对应的文件,可使用Quartus II自带的工程文件压缩功能:打开该工程的顶层实体文件,选择Project→Archive Project,在弹出的对话框中点击Archive按钮,完成工程文件压缩,产生压缩文件*.qar。但.qar文件是把众多文件压缩成一个文件,只有解压缩才能获取具体文件的信息。如果使用版本控制工具(如CVS),对.qar文件无法进行版本比较。甚至当.qar文件受损时,部分甚至全部文件都无法恢复了。而且,缺省配置的.qar文件也包含了一些非关键文件,存在一定的冗余。如何取舍控制文件?解决这一问题的关键在于弄清文件扩展名的意义,下面的文件是从Quartus II帮助文件中拷贝出来的文件扩展名解释,如表2.1.1。
表2.1.1 文件扩展名解释 File Type AHDL Include File ATOM Netlist File Block Design File Block Symbol File BSDL file Chain Description File Comma-Separated Value File Component Declaration File Compressed Vector Waveform File Conversion Setup File Cross-Reference File database files DSP Block Region File EDIF Input File Extension .inc .atm .bdf .bsf .bsd .cdf .csv .cmp .cvwf .cof .xrf .cdb, .hdb, .rdb, .tdb .macr .edf, .edif, .edn 2
教材名
Global Clock File Graphic Design File HardCopy files Hexadecimal (Intel-Format) File Hexadecimal (Intel-Format) Output File HSPICE Simulation Deck File HTML-Format Report File I/O Pin State File IBIS Output File In System Configuration File Jam Byte Code File Jam File JTAG Indirect Configuration File Library Mapping File License File Logic Analyzer Interface File Memory Initialization File Memory Map File PartMiner edaXML-Format File Pin-Out File placement constraints file Programmer Object File programming files QMSG File Quartus II Archive File Quartus II Archive Log File Quartus User-Defined Device File Quartus II Default Settings File .gclk .gdf .datasheet, .sdo, .tcl, .vo .hex .hexout .sp .htm .ips .ibs .isc .jbc .jam .jic .lmf license.dat .lai .mif .map .xml .pin .apc .pof .cdf, .cof .qmsg .qar .qarlog .qud .qdf 3
章名
Quartus II Exported Partition File Quartus II Project File Quartus II Settings File Quartus II Workspace File RAM Initialization File Raw Binary File Raw Programming Data File Routing Constraints File Signal Activity File SignalTap II File Simulator Channel File SRAM Object File Standard Delay Format Output File Symbol File Synopsys Design Constraints File Tab-Separated Value File Tabular Text File Tcl Script File Text Design File Text-Format Report File Text-Format Timing Summary File Timing Analysis Output File Token File Vector File Vector Table Output File vector source files Vector Waveform File Verilog Design File .qxp .qpf .qsf .qws .rif .rbf .rpd .rcf .saf .stp .scf .sof .sdo .sym .sdc .txt .ttf .tcl .tdf .rpt .tan.summary .tao ted.tok .vec .tbl .tbl, .vwf, .vec .vwf .v, .vh, .verilog, .vlg 4
教材名
Verilog Output File Verilog Quartus Mapping File Verilog Test Bench File Value Change Dump File version-compatible database files VHDL Design File VHDL Output File VHDL Test Bench File XML files waveform files .vo .vqm .vt .vcd .atm, .hdbx, .rcf, .xml .vhd, .vhdl .vho .vht .cof, .stp, .xml .scf, .stp, .tbl, .vec, .vwf 表2.1.1中的这些文件可以分为五类:
⑴ 编译必需的文件:设计文件(.gdf、.bdf、EDIF输入文件、.tdf、verilog设计文件、.vqm、.vt、VHDL设计文件、.vht)、存储器初始化文件(.mif、.rif、.hex)、配置文件(.qsf、.tcl)、工程文件(.qpf)
⑵ 编译过程中生成的中间文件(.eqn文件和db目录下的所有文件) ⑶ 编译结束后生成的报告文件(.rpt、.qsmg等) ⑷ 根据个人使用习惯生成的界面配置文件(.qws等) ⑸ 编程文件(.sof、.pof、.ttf等)
上面分类中的第一类文件是一定要保留的;第二类文件在编译过程中会根据第一类文件生成,不需要保留;第三类文件会根据第一类文件的改变而变化,反映了编译后的结果,可以视需要保留;第四类文件保存了个人使用偏好,也可以视需要保留;第五类文件是编译的结果,一定要保留。在使用版本控制工具时,建议保留第一类、第三类和第五类文件。但是第三类文件通常很少被反复使用。
为了维护一个最小工程,第一类和第五类文件是一定要保留的。
2.2.4 实验内容
利用软件MAX+PLUSII或QUARTUSII完成数码管显示电路的逻辑设计,学习用图形输入法完成电路的逻辑设计,学习画图技巧,并通过波形仿真及硬件实验箱验证设计的正确与否,并记录结果,完成报告。
2.2.4.1 模4计数器
以模4计数器为例,详细介绍基于原理图输入的quartusII工程设计过程:创建工程文件、编辑设计图形、编译综合、仿真验证、管脚配置、编程下载、硬件验证测试等。
1.建立工程文件 ⑴ 指定工程文件名
在图2.1.3所示窗口中,选择File→New Project Wizard,弹出如图2.1.4的对话框,在此对话框中分别输入新建工程所在的文件夹名称(counter4)、工程名称(counter4)和顶层实体名称(counter4)。QuartusII
5
章名
要求工程文件名与顶层实体名一致。
图2.1.3 QuartusII软件界面
图2.1.4 新建工程对话框
⑵ 添加文件和库
工程文件夹名、工程名以及顶层实体名设置完后,点击Next按钮,弹出如图2.1.5所示的对话框,在此对话框中可以设置添加的文件或者库,按提示操作。完成后,单击Next按钮,进入如图2.1.6所示的目标器件选择对话框。
6
教材名
图2.1.5 添加文件或库对话框
⑶ 选择目标器件
在图2.1.6所示的目标器件选择对话框中,在Family下拉列表中选择器件的种类(FLEX10K系列),在target device选项组中选择Specific device selected in “Avaiable devices” list,为用户制定目标器件。在Show in “Available device” list选项组中,通过限制封装(Package)、引脚数(Pin count)、速度等级(Speed grade)条件,快速查找所需器件,选择型号为EPF10K20TC144-3的主芯片。
图2.1.6 目标器件选择对话框
7
章名
单击Next按钮,进入如图2.1.7所示的第三方EDA工具选择对话框。 ⑷ 选择第三方EDA工具
在图2.1.7所示对话框中,依据提示用户可以选择所用的第三方工具如Modelsim、Synplify等。如不需要第三方工具,则单击Next按钮,进入如图2.1.8所示的工程创建结束对话框。
图2.1.7 第三方EDA工具选择对话框
⑸ 工程创建结束
在图2.1.8所示的结束对话框中,查看设置信息是否正确,正确,则单击Next,弹出如图2.1.9所示窗口,在QuartusII资源管理器中可以看到新建的工程名称。
图2.1.8 工程创建结束对话框
8
教材名
图2.1.9 工程创建后的界面
2. 设计输入(原理图法) ⑴ 选择输入文件类型
在2.1.9所示窗口中,选择Flie→New,或单击工具栏图标中的图标?,弹出如图2.1.10所示的新建文件类型选择对话框。在本对话框中有8中设计文件输入方式,分别对应相应的编译器。本节要介绍的是原理图输入法,选择Block Diagram/Schematic File并单击OK按钮,弹出如图2.1.11所示的图形编辑器对话框。
图2.1.10 新建文件类型选择对话框
9
章名
图2.1.11 空白的图形编辑器
⑵ 元件符号的放置
在空白的图形编辑器中双击鼠标左键,或者在编辑器的工具栏中单击图标?,弹出如图2.1.12所示的选择电路元件符号的对话框,选择others→maxplus2→74161,或在Name中直接输入74161,单击OK按钮。光标上粘连着被选中的元件符号,将其移动到合适的位置,单击鼠标左键,则元件放置完成,如图2.1.12所示。同样,在安置一个2输入与门,一个D触发器DFF,输入端INPUT和输出端OUTPUT符号。
图2.1.12 元件符号选择对话框
10
教材名
⑶ 命名及连接各元件
本实例中,需要将输入信号1个定义为时钟信号clk,输出信号2个定义为q1,q0。选中原理图中编辑器中的INPUT符号,用鼠标双击pin_name, 输入信号名“clk”,该输入信号则定义为时钟信号clk。同理可定义其他输入、输出信号。在本实例中,我们可以将同类型的输出信号q1、q0组合成一个信号组,并将其定义为输出信号q[1..0]。
连接元件有两种方法,一种是直接连接,一种是间接连接(逻辑连接法)。
直接连接:在图中将光标移动到输入信号clk的右侧,当光标变成十字形光标时按住鼠标左键不放,奖其拖到74161的clk管脚的左侧,带连接点上出现蓝色的小方块时释放鼠标左键,这样在输入信号除了口语74161的clk管脚之间有一条导线连接。这种连接属于直接连接。重复上述操作连接其他导线,完成原理图。
间接连接(逻辑连接法):在图中将光标移动到输出信号组q[1..0]的左侧,当光标出现十字形光标时按住鼠标左键不放,拖出一小段粗线后释放鼠标左键,在将这段小粗线命名为q[1..0],将鼠标移动到74161的输出信号QA端,当光标出现十字形光标时按住鼠标左键不放,拖出一小段细线,然后命名为q q[0],同理将74161的输出信号QB引出一小段连线并命名为q[],此时电路图中74161的QA,QB与输出信号q q[1..0]是连接的,这种通过对信号线命相同名的方法为间接逻辑连接法。如图2.1.13。
图2.1.13 模4计数器的电路图
⑷ 保存文件 单击按钮 3. 编译
选择菜单Processing→Compiler Tool,或直接点击按钮
,弹出Qurtus2的编译器窗口,点击“start”
按钮,开始编译,在下面的Message窗口会显示各种信息,包括警告和出错信息,如有错,则需要依据错误提示信息返回并修改电路,再次重新编译直至无错误提示信息和提示编译成功,如图2.1.14。
11
,弹出Windows标准的“另存为”对话狂框,在默认情况下保存工程文件名counter4,
保存类型为“.bdf”,并选中Add file to current project。单击“保存”按钮,完成文件的保存。
章名
图2.1.14 编译成功
4.仿真功能验证 ⑴ 建立波形文件
单击工具栏中的图标,弹出如图2.1.15所示的新建文件对话框。在此对话框中,选择Vector Waveform File并单击OK按钮,弹出如图2.1.16所示的波形编辑窗口。
图2.1.15 新建文件类型选择对话框
12
教材名
图2.1.16 波形编辑窗口
⑵ 添加引脚节点
① 在图2.1.16中,在Name下方的空白处双击鼠标左键,弹出如图2.1.17的Insert Node or Bus对话框,点击该对话框中的Node Finder按钮,弹出如图2.1.18的Node Finder对话框。
图2.1.17 添加节点或总线对话框
13
章名
图2.1.18 Node Finder对话框
② 在图2.1.18中,在Filter下拉列表中选择Pins,其他选项取默认值,单击List按钮,在Node Found中列出设计中的所有引脚,然后点击该图中的如图2.1.19。
图2.1.19 选择输入、输出引脚
③ 点击图2.1.19中的OK按钮,返回到添加节点的对话框。该对话框中的Name、Type、Bus width、Start index中的内容变为Multiple Items,如图2.1.20。单击OK按钮,繁华波形编辑窗口,此时选中的输入、输出引脚被调价到波形编辑窗口,如图2.1.21。
图2.1.20 添加完节点后的节点添加对话框
14
按钮,将所有的引脚复制到右侧的Selected Nodes中,
教材名
图2.1.21 添加节点后的波形编辑窗口
⑶ 参数设置
在波形编辑前,有两个重要参数需要设置:仿真结束时间、仿真网格大小。
① 仿真时间系统默认值为1us,但是在某些电路的仿真在1us内完成不了,因此需要在仿真前事先确定仿真时间,避免仿真时间不够的现象发生。选择菜单栏Edit→End Time,弹出End Time对话框,在Time文本框中更改仿真的结束时间为2us,其他不变,即设置波形仿真时间长度为2us。
图2.1.22 仿真结束时间对话框
② 选择菜单栏中的Edit→Grid Size,弹出网格大小设置对话框,系统默认的网格大小为10.0ns,需将其该为100ns,否则仿真后的仿真图中输出信号相对输入信号的延时比例偏大。一半我们将网格大小设置为100ns。
图2.1.23 网格大小的设置
⑷ 编辑波形
在图2.1.21中选中Name下方的clk,使其变为蓝色高亮状态,然后选择左侧波形编辑工具栏中的按钮,弹出如图2.1.24的时钟设置对话框,设置时钟信号的周期、相位和占空比。网格大小在设置参数
15
章名
时已设置为100ns,则时钟周期默认为100ns。设置完后,单击OK按钮,返回波形编辑窗口。如图2.1.25.
图2.1.24 时钟设置对话框
图2.1.25 编辑完输入信号之后的波形编辑窗口
⑸ 保存波形文件 在图2.1.25中单击的保存。
⑹ 仿真
Quartus2软件的仿真分为功能仿真和时序仿真。功能仿真是忽略了延时,按逻辑关系仿真,而时序仿真因加入了延时而更贴近实际情况。Quartus2仿真软件可以仿真整个设计,也可以指定工程中的任何设计实体为顶层设计实体,并仿真顶层实体及其所有其他附属实体。
开始仿真前,必须先生成合适的仿真网表,选择菜单栏中的Processing→Generate Functional Simulation Netlist,此外,建立并指定一个向量源文件为仿真输入向量的源。Simulator使用向量源文件所包含的输入向量,来仿真同意条件下编辑器件将要产生的输出信号。
① 功能仿真
16
按钮,弹出Windows标准的“另存为”对话框,在默认情况下,文件名为工
程文件名counter4,保存文件类型为.vwf,选中Add file to current project。单击“保存”按钮,完成文件
教材名
A::选择菜单栏中的Assignments→Settings,弹出如图2.1.26的仿真设置窗口,单击Simulator Settings选项后,在右侧的Simulation mode下拉列表中选择Functional,其他按默认设置,单击OK按钮完成设置。
图2.1.26 Quartus2软件的仿真设置窗口
B: 选择Processing→Generate Functional Simulation Netlist,自动创建功能仿真网表,完成后在相应弹出的提示框中,单击“确定”按钮即可。
C: 单击工具栏中的仿真按钮的波形没有延时,逻辑关系正确。
图2.1.27 无延时的功能仿真结果
,进行功能仿真,仿真结果如图2.1.27,从图中可以看出,仿真后
② 时序仿真
A: 选择菜单栏中的Assignments→Settings,弹出如图2.1.26的仿真设置窗口,单击Simulator Settings
17
章名
选项后,在右侧的Simulation mode下拉列表中选择Timing,其他按默认设置,单击OK按钮完成设置。
B::选择Processing→Generate Functional Simulation Netlist,自动创建功能仿真网表,完成后在相应弹出的提示框中,单击“确定”按钮即可。
C::单击工具栏中的仿真按钮
图2.1.28 有延时的时序仿真结果
,进行功能仿真,仿真结果如图2.1.28,从图中可以看出,仿真后
的波形有一定的延时,逻辑关系正确。
5. 目标器件选择及管脚分配
目标器件选择在创建工程时已选择完毕,管脚分配是为了对设计进行硬件测试和实际应用,将输入输出信号的引脚锁定到目标器件的相应管脚上。
选择菜单栏中的Assignments→Pins或Assignments→Pin Planner,弹出如图2.1.29的窗口,它包含器件封装视图,以不同的颜色和符号表示不同类型的引脚,并以其他符号表示I/O块。
图2.1.29 引脚和引脚组分配窗口
18
教材名
图2.1.29中显示了未分配引脚的列表,包括节点名称列、方向、类型;器件封装视图;在该窗口中,可调整视图大小,选择左侧工具栏中的
,再将鼠标拖至视图中点击视图,则视图放大,按住键盘的
shift键,将其拖至视图,点击视图,则视图变小。
分配管脚的方法:选中第一行(clk行)Location列,使其变为蓝色高亮状态并用鼠标双击,弹出主芯片EPF10K20TC144-3的管脚资源,再依据实验板上输入输出资源将该时钟信号clk锁定到目标管脚上P122上即可。同理锁定其他输出信号q[1]、q[0]在P118、P117两个发光二极管灯上。或者在器件封装图的需要分配的管脚上双击鼠标左键,弹出如图2.1.30的引脚属性框,在Node name下拉列表框中选择需要的节点名,其他按默认设置,然后单击OK按钮,完成引脚分配,同理分配其他引脚,如图2.1.31。分配完引脚后的电路图中显示出各输入输出引脚的分配状态,如图2.1.32。
图2.1.30 引脚属性对话框
图2.1.31 引脚分配完后的引脚分配窗口
19
章名
图2.1.32 引脚分配完后的电路图显示出输入输出管脚的状态
6.编程下载及硬件测试
顶层设计实体在通过编译后可生成文件*. Sof用于下载。在ALTERA公司的器件中,FLEX系列类似于FPGA,其逻辑块LE及内部互连信息都是通过芯片内部的存储器单元阵列完成的。这些存储器单元阵列可由配置程序装入。存储器单元阵列采用SRAM方式,对这类器件的下载称为配置。FLEX系列的配置信息采用SRAM方式保存。所以系统掉电后,FLEX系列的配置信息会丢失。需每次系统上电后重新配置。
在DDA-I型实验箱以及DDA-I便携型实验板使用的FLEX10K20TC144-3为FLEX系列,下面对其进行配置。
2.2.4.2 3选1多路选择器
本小节以3选1多路选择器为例,介绍基于硬件描述语言VHDL文本输入的工程设计:创建工程文件、编辑设计图形、编译综合、仿真验证、管脚配置、编程下载、硬件验证测试等。以上几个步骤除第二步改为硬件描述语言VHDL文本输入外,其他步骤与上述模4计数器的图形法设计工程过程相同。
QuartusII软件除电路图输入设计法外,还提供了一个灵活的工具QuartusII Text Editor,用于以AHDL、VHDL以及VerilogHDL硬件描述语言的文本型输入设计。使用Text Editor可以为QuartusII软件建立、输入、编辑、查看文本文件,同时AHDL、VHDL、VerilogHDL模板为用户输入HDL语法提供了简便的方法。利用QuartusII Text Editor文本编辑器建立的设计文件,在层次设计中可与其他类型的设计文件相结合。
我们要实现的功能为通过控制电路实现三组4位的数据每次输出显示其中的一组,如图2.1.40。
图2.1.40 4位的3选1多路选择器
1. 建立工程文件
工程文件的建立与2.2.4.1节所述方法类似,包括指定工程文件名、选择添加文件、库及选择目标器
20
教材名
件等过程。该新建工程所在的文件夹名称为mux4-3-1,工程名称为mux4-3-1,顶层实体名称为mux4-3-1,选择的目标器件为EPF10K20TC144-3。工程建立后如图2.1.41。
图2.1.41 建立完工程后的窗口
2. 在文本编辑器中输入硬件描述语言VHDL代码 ⑴ 建立文件
在图2.1.41中,选择File→New,或单击工具栏中的
按钮,弹出新建文本对话框,在该对话框中
选择VHDL File并单击OK按钮,进入如图2.1.42所示的文本编辑窗口。在该窗口中可以看到新建的文本编辑器默认的标题为Vhdl1.vhd,依据文本编辑器的标题可以区分所建立的文本文件的形式(AHDL、VHDL或VerilogHDL),三种形式的文件后缀名分别为.tdf、.vhd、.v。
⑵ 输入VHDL代码
在文本编辑器中设计程序文件时,可以直接利用QuartusII提供的模板进行语言文本的输入与编辑。 ① 在文本编辑器的空白处直接用输入程序代码。
② 在当前鼠标的位置点击鼠标右键,弹出菜单并选择Insert Template,弹出如图2.1.43的Insert Template对话框。
图2.1.42 QuartusII的文本编辑窗口
21
章名
图2.1.43 插入模板的对话框
③ 在图2.1.43中的插入模板对话框的Language template列表框中,选择需要插入的语言VHDL的语法结构模板,在右侧的Preview中显示选择的语法模板,点击Insert按钮,即可完成当前语法模板的插入操作。同时可将鼠标移动到需要出插入其他语法模板的位置,按照上述方法即可完成。
④ 在图2.1.42中输入该4位的3选1多路选择器的VHDL代码,如图2.1.44。
⑶ 保存文件 单击
按钮,弹出“另存为”对话框,将该文本设计文件保存为mux4_3_1.vhd,选中Add file to current
project,单击OK按钮,完成文本设计文件的保存。
图2.1.44 在文本编辑器窗口中输入的VHDL程序设计代码
22
教材名
3. 编译工程文件
该步骤与上述2.2.4.1中模4计数器的编译相同。
4.仿真功能验证
该步骤与上述2.2.4.1中模4计数器的仿真功能验证相同。仿真结果如图2.1.45。
图2.1.45 mux4-3-1的时序仿真结果
5.目标器件选择及管脚分配
目标器件选择在创建工程时已选择完毕,管脚分配还有另外一种方法:通过Tcl脚本文件分配管脚。 ⑴ 选择File→New,或者在工具栏中选择
按钮,弹出新建文件对话框,在该对话框中选择Tcl
script File并单击OK按钮,出现如图2.1.42的文本编辑窗口。
⑵ 在图2.1.42文本编辑窗口中输入以下脚本代码,如图2.1.46。 ⑶ 单击
按钮,弹出“另存为”对话框,将其脚本文件保存为“mux4_3_1.tcl,选中Add file to
current project,单击“保存”按钮,完成Tcl脚本文件的保存。
图2.1.46 在文本编辑窗口中输入Tcl文本代码
⑷ 打开编译器,重新编译工程文件。 ⑸ 选择Tool→Tcl Script,弹出如图2.1.47所示的Tcl Scripts对话框。在该对话框中的Libraries中,选中mux4_3_1.tcl,此时,在Preview窗口中显示整个引脚分配的脚本文件,单击Run按钮,完成引脚的分配。
23
章名
图2.1.47 Tcl Scripts对话框
⑹ 查看引脚分配
选择Assignment→Pins,弹出如图2.1.48的引脚和引脚组分配图,这种用脚本文件分配的方法与2.2.4.1节中介绍的方法的效果相同。该方法灵活多变,在相似实例中,只需添加修改即可直接使用。
24
教材名
图2.1.48 用Tcl脚本文件分配的引脚
7.编程配置并硬件测试
该步骤与2.2.4.1中介绍的相同。
2.2.4.3 译码器
利用2-4译码器芯片74193实现2-3译码的功能。 电路图为2.1.49。模拟结果如图2.1.50。
图2.1. 49 2-3译码器的电路图
图2.1.50 2-3译码器的模拟结果 2.2.4.5 数码管扫描显示电路(模块化层次设计)
在复杂的数字系统设计中,设计多采用模块化层次设计(自顶向下和自底向上)方法,利用QuartusII软件设计则推荐采用混合模式的工程设计方法。复杂的数字系统,通常由设计者构思出项目完成的基本框架,将项目划分为多个小模块,各模块的设计可以采用各种不同的设计方法完成,如原理图、硬件描述语言文本、状态机等。当各分模块设计完成,再将其整合,整合的过程又可一用图形法和语言文本法实现,具体采用何种方法,需设计者依照具体情况而定。本节以3位数码管扫描电路为例,介绍基于混合模式的工程设计流程。
本设计需要完成3个4位的数据稳定的在数码管上显示。1个数据分别对应1个数码管。数码管的位选信号为bsg[2]、bsg[1]、bsg[0]分别代表百位、十位和个位,数码管的段选信号(a,b,c,d,e,f,g)是共用的,由于段选信号共用,因此需要一个模4计数器、一个多路选择器、一个2-3译码电路以及一个七段译码电路组成的扫描电路来循环显示3个数码管的数据,当循环时钟频率足够快时,由于人眼的视觉
25
章名
暂留,感觉3个数码管同时亮,保证数据稳定显示。
● 用图形法调用分模块的符号文件 1. 创建工程文件
工程文件的建立与2.2.4.1节所述方法类似,包括指定工程文件名、选择添加文件、库及选择目标器件等过程。该新建工程所在的文件夹名称为scan_led3,工程名称为scan_led3,顶层实体名称为scan_led3,选择的目标器件为EPF10K20TC144-3。工程建立后如图2.1.51。
图2.1.51 创建工程文件scan_led3 2. 用图形法完成顶层设计 ⑴ 创建分模块默认的符号文件
将前面分模块的设计文件counter4.bdf、mux4_3_1.vhd、decoder2-4.bdf拷贝到新建工程所在的文件夹中,在打开counter4.bdf窗口,选择File→Create/Update,在弹出的窗口中选择Create Symbol File for Current File,弹出如图2.1.52的Create Symbol File窗口,保存文件名为counter4.bsf,即完成创建该文件的符号文件。分别打开其他分模块设计文件,创建各分模块的符号文件mux4_3_1.bsf、decoder2-4.bsf。
图2.1.52 保存创建默认的符号文件*.Bsf
26
教材名
⑵ 建立顶层文件
按照前面介绍的方法新创建一个空白的原理图编辑窗口。 ⑶ 放置符号文件
在空白原理图编辑窗口双击鼠标左键,弹出symbol窗口,在该窗口的Libraries栏中点击Project,刚刚创建的各分模块的符号文件出现在该栏中如图2.1.53,分别选中,点击OK按钮,将其放置在空白原理图编辑窗口。
图2.1.53 创建的各分模块的符号文件
⑷ 完成顶层电路图连接
依次连接各模块的信号,完成后的顶层电路如图2.1.54。
图2.1.54 顶层电路图scan_led3。Bdf
27
章名
3. 编译
编译方法参照同前面实例中所述。编译无错误后进入仿真功能验证阶段。 4. 仿真验证
仿真方法参照前面实例所述,时序仿真结果如图2.1.55。
图2.1.55 数码管扫描电路的仿真结果
5. 管脚分配
按照前面实例介绍的两种方法完成管脚分配。锁定完管脚后的电路图如图2.1.56。
图2.1.56 锁定完管脚后的电路图scan_led3。Bdf
6.编程配置及硬件测试
按照前面实例中所述方式对该设计进行编程配置下载,验证数码管扫描电路的功能,观察3个数据分别通过数码管稳定显示结果。
● 基于混合模式的工程设计
28
教材名
1.建立工程文件
建立文件名为scan_led的工程项目。
2.建立文件
⑴ 建立4位的3选1的多路选择器
① 新建工程的空白原理图编辑窗口中,单击左侧工具栏中的模块。
② 设置模块:在放置的模块上单击鼠标右键,在弹出的菜单栏中选择Block Properties Instance name,弹出如图2.1.57的Block Properties对话框,在Name文本框中定义该设计文件名为:mux4_3_1,在Instance name文本框中输入模块名为inst1。
图2.1.57 Block Properties对话框
按钮,在合适的位置放置这个符号
在图2.1.57中,单击I/Os,弹出对话框如图2.1.58。在Name文本框中输入模块的输入或输出端口名称,并在Type中选择端口的类型,然后点击Add按钮,完成输入、输出端口的设置。完成后单击 “确定”按钮。完成模块端口设置后,如图2.1.59。
图2.1.58 模块的端口属性设置
29
章名
③ 添加模块引线并设置其属性:在图2.1.59中的模块图左右两侧各添加一条引线,在每条引线靠近模块的一侧都有
标志如图2.1.60,双击该标志,弹出如图2.1.61所示的Mapper Properties对话框,
图2.1.59 完成模块属性设置后的图 图2.1.60 添加模块引线
在该对话框的General选项栏中的Type下拉栏中选择引线类型(INPUT、OUTPUT、BIDIR)。
在图2.1.61的Mapper Properties对话框中,点击Mappings,完成模块内部节点与外部引线的映射关系,如图2.1.62。在I/0 on Block中选择模块内部节点名为d0[3..0],在Singals in node中选择引线名为a[1..0],然后单击 Add按钮,完成一对外部引线与模块内部端口的映射设置。按“确定”按钮。同样方法设置其他引线与内部端口的映射关系,设置完后如图2.1.63。
④ 创建设计文件
在图2.1.63中的模块符号上单击鼠标右键,在弹出菜单栏中选择Create Design File from Selected Block,弹出如图2.1.64的创建设计文件对话框。在File Type中有四种类型(AHDL、VHDL、VerilogHDL、Schematic),本例选择VHDL,单击OK按钮,进入的VHDL文本编辑窗口。
图2.1.61 Mapper Properties对话框的Gernal选项 图2.1.62 Mapper Properties对话框的Mapping选项
30
教材名
图2.1.63 设置完引线与模块端口映射设置 图2.1.64 创建设计文件类型对话框
⑤ 输入该模块的VHDL代码:在弹出的VHDL文本编辑窗口中修改并输入该模块的VHDL代码,实现一个4位的3选1多路选择器电路。如图2.1.65。
图2.1.65在文本编辑窗口下输入设计的VHDL代码
将该设计文件保存为mux4_3_1.vhd,至此,该模块的创建与设计完成。 ⑵ 创建模4计数器模块
该模块设计采用原理图输入法完成。 ① 创建并设置模块
在图2.1.60的窗口中,在适当位置再次放置一个符号模块,并设置模块的属性:设计名:counter_4;模块名:inst2;输入时钟信号:clk;输出信号q[1..0]。
② 添加模块引线并设置其属性
在counter4模块的左右两侧各放置一条连线clock和一条总线se[1..0]设置属性,clock:类型为INPUT,映射关系为clock对应clk;se[1..0]:类型为OUTPUT,映射关系为se[1..0]对应q[1..0]。
③ 创建该模块的原理图设计文件
在counter4模块符号上单击鼠标右键,在弹出的菜单栏中选择Create Design File from Selected Block,弹出如图2.1.64所示的创建文件类型选择对话框,选择Schematic,按OK按钮,进入图形编辑
31
章名
器窗口。
按照前面实例中介绍的方法完成该模块的原理图设计输入,并保存该设计文件为counter_4.bdf。 ⑶ 2-4译码器模块
该模块设计同样采用原理图输入法完成。 ① 创建并设置模块
在图2.1.60的窗口中,在适当位置再次放置一个符号模块,并设置模块的属性:设计名:decoder2_4;模块名:inst3;输入信号:data[1..0];输出信号seg[2..0]。
② 添加模块引线并设置其属性
在counter4模块的左右两侧各放置一条总线se[1..0]、seg_out[2..0],设置属性se[1..0]:类型为INPUT,映射关系为se[1..0]对应 data[1..0];seg_out[2..0]:类型为OUTPUT,映射关系为seg_out[2..0]对应seg[2..0]。
③ 创建该模块的原理图设计文件
在decoder2_4模块符号上单击鼠标右键,在弹出的菜单栏中选择Create Design File from Selected Block,弹出如图2.1.64所示的创建文件类型选择对话框,选择Schematic,按OK按钮,进入图形编辑器窗口。
按照前面实例中介绍的方法完成该模块的原理图设计输入,并保存该设计文件为decoder2_4.bdf。 ⑷ 完成顶层设计,保存文件
在图2.1.60上添加一个七段译码芯片7449,并将其分模块连接,至此整个设计基本完成,点击存盘按钮,保存顶层文件为scan_led.bdf。采用基于混合模块的工程设计方法完成的设计图如图2.1.66。
3.编译工程文件 4.仿真验证 5.分配管脚
6.编程配置与硬件测试
以上3-6步与前面介绍的实例类似。
图2.1.66 基于混合模块的工程设计方法完成的3个数码管扫描电路
32
教材名
2.2.5 作业
熟悉quartusII各种输入设计方法,用基于混合模式的工程设计方法完成数码管扫描显示电路,仿真并下载验证器功能。
33
因篇幅问题不能全部显示,请点此查看更多更全内容