1、第4章原理图与宏功能模块设计第2讲QUARTUS开发软件2.1 图形输入法设计实例图形输入法设计实例2.2 文本输入法设计实例文本输入法设计实例2.3 宏功能模块及其使用宏功能模块及其使用第4章原理图与宏功能模块设计1 输入图形设计文件2 编译 分析综合:分析(检查原理图信号线有无虚接)综合 (完成逻辑设计到器件资源的映射)适配:完成设计逻辑在器件中的布局布线、选择适当的内部互连 路径、引脚分配、逻辑元件分配等操作 汇编:产生多种形式的器件编程映像文件,可下载到目标芯片的 编程文件中 时序分析3 仿真 (建立波形文件、输入信号节点、设置波形参量、编辑输入信 号、保存波形文件、运行仿真器)4 编
2、程下载 (分配引脚、重新编译、连接电缆、下载、硬件测试)2.1 Quartus图形输入设计步骤图形输入设计步骤第4章原理图与宏功能模块设计4位加法器设计实例位加法器设计实例 本节将通过一个4位加法器的设计实例来介绍采用图形输入方式进行简单逻辑设计的步骤。第4章原理图与宏功能模块设计图2.1 4位加法器端口 2.1.1 4位加法器逻辑设计位加法器逻辑设计4位加法器是一种可实现两个4位二进制数的加法操作的器件,其输入/输出端口如图2.1所示。输入为两个4位二进制的被加数A和B,以及输入进位位Ci,输出为一个4位二进制和数D和输出进位位Co。第4章原理图与宏功能模块设计图2.2 4位加法器的顶层结构
3、4位加法器的顶层结构如图2.2所示,由一个半加器和三个全加器串接而成。工作时,首先是低位A1与B1两位数相加,得出最低位的和数D1和进位位C1,然后第二位加数A2、B2以及第一位全加运算后的进位输出C1进行全加操作,得到和数的第二位D2和进位位C2,依次类推,最终获得 4 位和数D4和进位位Co。A=(A4A3A2A1)B=(B4B3B2B1)第4章原理图与宏功能模块设计表表2.1 半加器逻辑状态表半加器逻辑状态表ABCS0000010110011110半加操作就是求两个加数A、B的和,输出本位和数S及进位数C,其逻辑状态如表2.1所示。由逻辑状态表可写出逻辑式:SABBAABABC 由逻辑式
4、可获得如图2.3所示的逻辑图。第4章原理图与宏功能模块设计图2.3 半加器逻辑结构A N D 2in stX O Rin st2V C CBIN P U TV C CAIN P U TCO U T P U TSO U T P U T第4章原理图与宏功能模块设计每个全加器有3位输入,分别是加数A、B和一个进位位Ci。将这三个数相加,得出本位和数(全加和数)D和进位数Co。这个过程称为“全加”,全加器的逻辑状态如表2.2所示。表表2.2 全加器的逻辑状态表全加器的逻辑状态表ABCiCoD0000000101010010111010001101101101011111全加器如图2.4所示,由两个半加
5、器和一个“或”门组成。第4章原理图与宏功能模块设计图2.4 全加器逻辑结构工作时A和B在第一个半加器中相加,得出的结果再和Ci在第二个半加器中相加,即得出全加和D。两个半加器的进位数通过“或”门输出作为本位的进位数Co。第4章原理图与宏功能模块设计2.1.2 半加器模块设计过程半加器模块设计过程本节将介绍使用Quartus6.0“Graphic Editor”进行设计输入的步骤。(1)双击桌面上的Quartus6.0快捷图标,打开如图2.5所示的“Quartus”窗口。图2.5 “Quartus”窗口第4章原理图与宏功能模块设计(2)选择如图2.6所示的“File”“New Project W
6、izard”命令,打开如图2.7所示的“New Project Wizard:Introduction”对话框。图2.6 选择“File”“New Project Wizard”命令第4章原理图与宏功能模块设计图2.7 “New Project Wizard:Introduction”对话框第4章原理图与宏功能模块设计图2.8 “New Project Wizard:Directory,Name,Top-LevelEntitypage 1 of 5”对话框(4)在如图2.8所示的对话框中输入新建项目的地址路径,本例中设置路径为“d:example”。输入项目的名称,本例中设置项目名称为“hsa
7、”。输入设计实体的名称,本例中设置设计实体的名称为“hsa”,单击“Next”按钮,打开如图2.9所示的“New Project Wizard:Add Filespage 2 of 5”对话框。第4章原理图与宏功能模块设计图2.9 “New Project Wizard:Add Filespage 2 of 5”对话框“New Project Wizard:Add Filespage 2 of 5”对话框用于向项目中添加已存在的文件,由于本例中新建的是空白项目,因此暂时没有文件需要添加。第4章原理图与宏功能模块设计(5)在如图2.9所示的对话框中单击“Next”按钮,打开如图2.10所示的“N
8、ew Project Wizard:Family&Device Settings page 3 of 5”对话框。图2.10 “New Project Wizard:Family&Device Settings page 3 of 5”对话框第4章原理图与宏功能模块设计(6)在如图2.10所示的对话框中的“Family”下拉列表中选择“FLEX10K”,在“Target device”区域中选择“Specific device selected in Available deviceslist”单选项。然后在对话框下方的“Available devices”列表中选择“EPF10K10LC84
9、-4”,单击“Next”按钮,打开如图2.11所示的“New Project Wizard:EDA Tool Settings page 4 of 5”对话框。“New Project Wizard:EDA Tool Settings page 4 of 5”对话框用于设置第三方软件。Quartus软件允许使用第三方软件进行综合、仿真和分析,在新建项目时就可以指定使用其他软件进行这些处理。本例中使用Quartus自带的综合、仿真和分析工具,所以不需要设置该对话框中的内容。第4章原理图与宏功能模块设计(7)在如图2.11所示的对话框中单击“Next”按钮,打开如图2.12所示的“New Proj
10、ect Wizard:Summarypage 5 of 5”对话框。第4章原理图与宏功能模块设计(8)在如图2.12所示的对话框中单击“Finish”按钮,结束项目的新建操作。此时Quartus操作界面内的“Project Navigator”面板将显示新建的“hsa”项目,如图2.13所示。图2.13 “Project Navigator”面板第4章原理图与宏功能模块设计完成了项目的新建操作后,接下来要在项目中新建图形设计文件。(9)单击“Quartus”工具栏中的新建文件工具按钮,打开如图2.14所示的“New”对话框。第4章原理图与宏功能模块设计(10)在如图2.14所示的对话框中的“D
11、evice Design Files”选项卡中选择“Block Diagram/Schematic File”项,单击“OK”按钮,新建一个默认名为“Block1.bdf”的模块原理图文件,如图2.15所示。第4章原理图与宏功能模块设计(11)在图形输入工作界面中单击鼠标右键,在弹出的菜单中选择“Insert”“Symbol”命令,打开如图2.16所示的“Symbol”对话框。第4章原理图与宏功能模块设计(12)单击如图2.16所示的对话框左上角的“Libraries”列表中的“+”符号,展开该树形列表,选择“Libraries”“primitives”“pin”“input”符号,如图2.1
12、7所示。图2.17 选择“input”符号第4章原理图与宏功能模块设计(13)单击“OK”按钮,在图形输入工作区中单击鼠标左键两次,添加两个输入端口符号,如图2.18所示。图2.18 添加的两个输入端口第4章原理图与宏功能模块设计(14)按照步骤(11)(13)中的方法,在“Block1.bdf”文件窗口中分别添加一个“AND2”和“XOR”元件符号,以及两个“OUTPUT”元件符号,如图2.19所示。图2.19 添加元件后的“Graphic Editor”窗口第4章原理图与宏功能模块设计(15)将鼠标移动到元件的引脚端,鼠标形状将自动变为“”形,单击并拖动鼠标至另一个元件符号的引脚端,生成一
13、条连线将这两个元件引脚连接起来。按照如图2.20所示的半加器原理图,将“Block1.bdf”文件窗口中的元件连接起来。第4章原理图与宏功能模块设计(16)双击图2.20所示工作区左上角的名称为“pin_name”的“INPUT”元件,打开如图2.21所示的“Pin Properties”对话框。(17)在“Pin Properties”对话框中的“Pin name(s):”编辑框中输入“a”,单击“确定”按钮,将选中“INPUT”元件端口的名称设置为“a”。第4章原理图与宏功能模块设计(18)按照步骤(17)中的方法,将“INPUT”和“OUTPUT”元件的名称改为如图2.22所示的自定义的
14、引脚名称。图2.22 自定义的引脚名称第4章原理图与宏功能模块设计(19)选择主菜单中的“File”“Save”命令,打开如图2.23所示的“另存为”对话框。图2.23 “另存为”对话框第4章原理图与宏功能模块设计(20)在如图2.23所示的“另存为”对话框中的“文件名”编辑框内输入“hsa”,然后单击“保存”按钮,将文件名称改为“hsa.bdf”,并且将文件存盘于新建项目的文件夹中。设计输入完成!设计输入完成!第4章原理图与宏功能模块设计(21)在主菜单中选择“Processing”“Start Compilation”命令,系统对设计进行编译,同时打开“Compilation Report
15、-Flow Summary”窗体,“Status”视图中将显示编译的进程,界面如图2.24所示。第4章原理图与宏功能模块设计(22)编译完成后,系统弹出如图2.25所示的“Quartus”消息框,提示编译完成。图2.25 “Quartus”消息框(23)单击“确定”按钮,关闭该消息框。编译完成后的“Compilation Report-Flow Summary”窗体如图2.26所示。图2.26所示的“Compilation Report-Flow Summary”窗体中显示了编译的结果信息,通过该窗体,可知半加器单元占用2个逻辑单元,4个引脚,没有占用存储单元。第4章原理图与宏功能模块设计设计
16、编译完成!设计编译完成!第4章原理图与宏功能模块设计在完成设计文件的编译后,为检验设计的正确性,下一步就是对设计进行功能校验。(24)在主菜单中选择“File”“New”命令,打开“New”对话框。(25)单击“New”对话框中的“Other Files”选项卡标签,打开如图2.27所示的“Other Files”选项卡。第4章原理图与宏功能模块设计(26)在如图2.27所示的选项卡中选择“Vector Waveform File”选项,单击“OK”按钮,新建一个如图2.28所示的默认名称为“Waveform1.vwf”的波形文件。第4章原理图与宏功能模块设计(27)在“Waveform1.v
17、wf”的波形文件左侧的节点列表中单击鼠标右键,在弹出的菜单中选择“Insert”“Insert Node or Bus”命令(如图2.29所示),打开如图2.30所示的“Insert Node or Bus”对话框。图2.29 选择“Insert”“Insert Node or Bus”命令第4章原理图与宏功能模块设计(28)在如图2.30所示的对话框中单击“Node Finder”按钮,打开如图2.31所示的“Node Finder”对话框。图2.31 “Node Finder”对话框第4章原理图与宏功能模块设计(29)在如图2.31所示的对话框中的“Filter”下拉列表中选择“Pins:
18、all”项,单击“List”按钮,在“Nodes Found”列表中显示项目中所有的引脚节点,如图2.32所示。图2.32 显示所有引脚节点第4章原理图与宏功能模块设计(30)单击按钮,将所有的节点都添加到“Selected Nodes”列表中,单击“OK”按钮,关闭“Node Finder”对话框。(31)单击“Insert Node or Bus”对话框中的“OK”按钮,将所选择的节点添加到空白波形文件中。添加节点后的“Waveform1.vwf”文件窗口如图2.33所示。图2.33 添加节点后的“Waveform 1.vwf”文件窗口第4章原理图与宏功能模块设计(32)选择主菜单中的“E
19、dit”“End Time”命令,打开如图2.34所示的“End Time”对话框。图2.34 “End Time”对话框第4章原理图与宏功能模块设计(33)在如图2.34所示的对话框的“Time”编辑框中输入“100”,单位为“s”,单击“OK”按钮,即表示设置仿真时间为100 s。(34)在如图2.33所示的左侧的工具栏中单击按钮,或者按住“Ctrl”键,同时向下滚动鼠标滚轮,将“Waveform1.vwf”窗口中的显示比例缩小,拖动选择节点“a”的一段波形,使其被选中,然后单击左侧工具栏的按钮,使选中的一段波形状态变为“1”。采用同样的方法,将输入节点波形设置为如图2.35所示的状态。第
20、4章原理图与宏功能模块设计图2.35 调整节点波形(35)选择“File”“Save”命令,或者单击保存按钮,或按“Ctrl+S”快捷键,打开如图2.36所示的“另存为”对话框。第4章原理图与宏功能模块设计图2.36 “另存为”对话框(36)接受系统的默认名称“hsa.scf”,单击“OK”按钮,将波形文件存盘。为了对设计进行仿真,创建的波形文件的名称必须与设计文件的名称相同,并且它们要被保存在同一个子目录下。第4章原理图与宏功能模块设计(37)选择“Processing”“Start Simulation”命令,或者单击工具栏中的仿真工具按钮,启动仿真。仿真过程中的Quartus界面如图2.
21、37所示,系统自动弹出“Simulation Waveform”窗口,“Status”视图中显示仿真进程条,下方的消息栏中显示仿真过程的信息。图2.37 仿真过程中的Quartus界面第4章原理图与宏功能模块设计仿真结束后,弹出如图2.38所示的“Quartus”消息框,提示仿真结束。图2.38 “Quartus”消息框 (38)单击如图2.38所示的“Quartus”消息框中的“确定”按钮,关闭该消息框。仿真结果波形如图2.39所示。第4章原理图与宏功能模块设计图2.39 仿真结果波形从校验仿真后得到的“hsa.scf”文件的波形,可以确定半加器设计不存在逻辑错误。但是在a和b同时发生变化的
22、时候,会出现毛刺,这就是竞争现象引起的,关于这种毛刺的去除方法,将在以后章节中介绍。仿真完成!第4章原理图与宏功能模块设计(39)将其打包,该设计可被上层设计调用,选择“File”“Create/Update”“Create Symbol Files for current file”命令,打开“Create Symbol File”对话框。第4章原理图与宏功能模块设计(40)接受如图2.40所示的对话框内默认的名称“hsa.bsf”,单击“保存”按钮,弹出如图2.41所示的“Quartus”消息框。图2.41 “Quartus”消息框(41)单击“Quartus”消息框中的“确定”按钮,系统
23、将生成元件,并保存在上一步设置的“hsa.bsf”文件中。abcshsainst半加器设计完成!半加器设计完成!第4章原理图与宏功能模块设计2.1.3 全加器模块设计过程全加器模块设计过程(1)按照2.1.2节介绍的方法,新建一个名称为csa的图形项目。新建并打开一个名称为“csa.bdf”的空白图形输入文件。(2)在“csa.bdf”文件的空白处,单击鼠标右键,在弹出的菜单中选择“Insert”“Symbol”命令,打开如图2.42所示的“Symbol”对话框。(3)单击“Symbol”对话框中“Name”编辑框右侧的“”按钮,打开“打开”对话框。第4章原理图与宏功能模块设计(4)在“打开”
24、对话框中选择2.1.2节中创建的半加器元件文件“hsa.bsf”,单击“打开”按钮,将其打开到“Symbol”对话框中,如图2.43所示。图2.43 打开半加器元件的“Symbol”对话框第4章原理图与宏功能模块设计(5)单击如图2.43所示的对话框中的“OK”按钮,在文件的空白处布置两个“hsa”元件。(6)按照全加器的设计原理,添加其他元件符号,连接电路,并更改端口名称,完成如图2.45所示的全加器原理图。(7)选择“File”“Save”命令,保存全加器原理图。第4章原理图与宏功能模块设计(8)编译通过后,进行仿真,仿真通过后,选择“File”“Create/Update”“Create
25、 Symbol Files for current file”命令,接受“Create Symbol File”对话框内默认的名称“csa.bsf”,生成名称为“csa.bsf”的元件文件。ABCiCoDcsainst全加器设计完成!全加器设计完成!第4章原理图与宏功能模块设计2.1.4 4位加法器的设计过程位加法器的设计过程(1)创建一个名称为“adder4”的项目,在该项目中新建一个空白图形文件。(2)在文件的空白处,单击鼠标右键,在弹出的菜单中选择“Insert”“Symbol”命令,打开“Symbol”对话框。(3)单击“Symbol”对话框中的“”按钮,选择2.1.3节创建的“csa
26、.bsf”文件,将其添加到“Symbol”对话框中,如图2.46所示。(4)单击“Symbol”对话框中的“OK”按钮,在文件空白处添加3个“csa”元件,如图2.47所示。第4章原理图与宏功能模块设计(5)按照4位加法器的原理,在文件窗口添加其他元件符号,并用导线连接起来,绘制如图2.48所示的原理图。图2.48 4位全加器原理图第4章原理图与宏功能模块设计(6)选择“File”“Save As”命令,打开“Save As”对话框,在“Save As”对话框的“File Name”编辑框中输入“adder2.gdf”,单击“OK”按钮,保存4位加法器原理图。(7)选择“Processing”
27、“Start Compilation”命令,开始对adder4项目进行综合、编译,过程如图2.49所示。编译完成后,弹出如图2.50所示的“Quartus”消息框,提示编译成功结束。(8)在“adder4”项目中新建一个空白波形文件。(9)选择“Edit”“End Time”命令,打开“End Time”对话框。(10)添加节点,给输入赋值,进行仿真。第4章原理图与宏功能模块设计第4章原理图与宏功能模块设计使用鼠标单击并拖动波形文件窗口中“Name”列下的“B1”“B4”项,将其选中,单击鼠标右键打开下拉菜单,选中“Grouping”“Group”命令(如图2.53所示),打开如图2.54所示
28、的“Group”对话框。图2.53 选择“Grouping”“Group”命令 第4章原理图与宏功能模块设计图2.54 “Group”对话框 第4章原理图与宏功能模块设计(11)在如图2.54所示的对话框的“Radix”下拉列表中选择“Unsigned Decimal”项,在“Group name”编辑栏内输入组名“B”,单击“OK”按钮,将节点“B1”“B4”合成一个名为“B”的组,并且用十进制数值表示。(12)按照同样的方法,将节点“A1”“A4”合成一个名为“A”的组,并且用十进制数值表示。将节点“Co”移动至节点“D4”上方,将“Co”、“D4”、“D3”、“D2”和“D1”依次序合成
29、一个名为“Dout”的组,并用十进制表示。(19)选择“Edit”“Grid Size”命令,打开如图2.56所示的“Grid Size”对话框。图2.56 “Grid Size”对话框第4章原理图与宏功能模块设计(20)在如图2.56所示的对话框的“Period”编辑框内输入“1 s”,单击“OK”按钮,将仿真的最小时间段设置为1 s。(21)使用鼠标双击选中A组的所有波形,单击鼠标右键,在弹出的菜单中选择如图2.57所示的“Value”“Random Values”命令,打开如图2.58所示的“Random Values”对话框。(23)按照步骤(16)和(17)的方法,设置B输入信号。(
30、24)单击保存文件按钮,打开“Save As”对话框,接受系统默认的名称“adder2.vwf”,单击“OK”按钮,保存波形文件。(25)选择“Processing”“Start Simulation”命令,系统开始仿真。(26)仿真结束后,在弹出的“Quartus”消息框内单击“确定”按钮,打开“Simulation Waveform”窗口,显示仿真结果。第4章原理图与宏功能模块设计图2.60 “Simulation Waveform”窗口根据仿真结果波形,可知4位加法器实现了加法功能,所有加法运算结果正确,功能符合设计要求。接下来要进行时序分析,确定各引脚之间的延时参数。第4章原理图与宏功
31、能模块设计(27)选择“Processing”“Start”“Start Classic Timing analyzer”命令,进行时序分析。(28)时序分析结束后,单击“Compilation Report”窗口左侧的树形列表中的“Timing Analyzer”项,选择“Summary”报告,显示如图2.61所示的“Timing Analyzer Summary”列表。图2.61 “Timing Analyzer Summary”列表“Timing Analyzer Summary”列表中显示了信号的最长延迟时间为19.6 ns,该信号的路径是从B1引脚到Co引脚,说明加法模块一次运算所需
32、时间至少为19.6ns。第4章原理图与宏功能模块设计图2.62 “tpd”报告(29)单击“Compilation Report”窗口左侧的树形列表中的“Timing Analyzer”项内的“tpd”项,打开“tpd”报告,如图2.62所示。通过分析延时阵列表可以发现,D1、D2、D3、Co、D4的延时依次增大,这一现象是由设计的串行结构所造成的。在确定引脚间的延时满足设计要求后,最后就是将设计下载到器件中做进一步的硬件测试。第4章原理图与宏功能模块设计图2.63 “Pin Planner”窗口(30)在主菜单中选择“Assignments”“Pin”命令,打开如图2.63所示的“Pin P
33、lanner”窗口。第4章原理图与宏功能模块设计(31)双击“Pin Planner”窗口下方的列表中“A1”所处的行对应的“Location”列的单元格,在弹出的下拉列表中选择“Pin16 Row/IO”项,将第16号引脚设置为A1信号输入引脚。(32)双击“Pin Planner”窗口内的“FLEX10K”器件的“17”号引脚,打开如图2.64所示的“Pin Properties”对话框。(33)在“Pin Properties”对话框中的“Node name”下拉列表中选择“A2”,单击“OK”按钮,将Pin17引脚设置为A2信号输入引脚。(34)按照以上方法,为设计中的其他端口定义引脚
34、,定义好端口引脚的“Pin Planner”窗口如图2.65所示。第4章原理图与宏功能模块设计图2.65 定义好端口引脚的“Pin Planner”窗口第4章原理图与宏功能模块设计(35)选择“Processing”“Start Compilation”命令,对设计进行重新编译,将引脚设置编入配置文件中,编译完成后,在弹出的“Quartus”消息栏内单击“确定”按钮。(36)使用下载电缆将计算机的打印口与目标板连接好,打开电源,选择“Tools”“Programmer”命令,打开如图2.66所示的“adder2.cdf”窗口。图2.66 “adder2.cdf”窗口(37)单击如图2.66所示
35、窗口中的“Hardware Setup”按钮,打开如图2.67所示的“Hardware Setup”对话框。第4章原理图与宏功能模块设计图2.67 “Hardware Setup”对话框(38)在“Currently selected hardware”下拉列表中选择“ByteBlaster(MV)”项,单击“Close”按钮。ByteBlaster(MV)对应计算机的并行通信口下载通道。“MV”是指对于混合电压均适用的意思。Altera公司的各类芯核电压的FPGA/CPLD都能使用该下载电缆下载。用户只需要在第一次编程下载时设置“Hardware Type”项,设置完成后的“adder2.c
36、df”文件窗口如图2.68所示。第4章原理图与宏功能模块设计图2.68 设置完成后的“adder2.cdf”文件窗口(39)在“adder4.cdf”文件窗口中勾选“Program/Configure”、“Verify”、“Blank-Check”和“Examine”项,然后单击“Start”按钮,将配置下载到器件中。(40)下载完成后,系统将弹出一个“Quartus”消息框,提示下载完成。取下下载电缆即可使用。至此,4位加法器的设计基本完成。第4章原理图与宏功能模块设计2.2VHDL设计输入方式设计输入方式2.2.1 文本输入界面文本输入界面2.2.2 用用VHDL实现实现8位加法器设计位加
37、法器设计 第4章原理图与宏功能模块设计 2.2.1 文本输入界面文本输入界面新建一个文本文件,即可开启如图5.1所示的文本编辑界面,在该界面中可以输入、编辑、查看各种文本文件,包括使用VHDL描述的电路设计文件“*.vhd”、使用Verilog HDL描述的设计文件“*.v”、使用AHDL描述的电路设计文件“*.tdf”以及其他的ASCII码文本文件。文本编辑界面对于HDL输入文件提供了语法辅助功能。在文本编辑界面中能使用不同的颜色显示HDL的关键字,同时还对进行自动缩排输入的HDL文本提供了HDL模板“Template”,方便HDL的输入和编辑。第4章原理图与宏功能模块设计图5.1 文本编辑
38、界面第4章原理图与宏功能模块设计 2.2.2 用用VHDL实现实现8位加法器设计位加法器设计本节将以一个简单的8位加法器的设计实例来介绍通过文本输入方式使用VHDL进行设计的步骤。(1)打开Quartus 6.0,选择主菜单的“File”“New Project Wizard”命令,打开“New Project Wizard”对话框。(2)在“New Project Wizard”对话框中设置项目名称为“unsigned_adder”,然后单击“Finish”按钮,新建一个名称为“adder”的项目。(3)单击新建文件工具按钮,打开如图5.2所示的“New”对话框。第4章原理图与宏功能模块设计
39、图5.2 “New”对话框(4)在“New”对话框中的“Device Design Files”选项卡内选择“VHDL File”选项,单击“OK”按钮,新建一个默认名称为“VHDL1.vhd”的VHDL文件。(5)单击工具栏中的保存按钮,打开“另存为”对话框,在“文件名编辑框内输入“adder.vhd”,单击“保存”按钮,将该文本文件保存为“unsigned_adder.vhd”文件。第4章原理图与宏功能模块设计(6)在文本输入区输入VHDL设计文件。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.NUMERIC_STD.ALL;ENTIT
40、Y unsigned_adder IS GENERIC(DATA_WIDTH:natural:=8);PORT(a:IN UNSIGNED (DATA_WIDTH-1)DOWNTO 0);b:IN UNSIGNED (DATA_WIDTH-1)DOWNTO 0);result:OUT UNSIGNED(DATA_WIDTH-1)DOWNTO 0);END ENTITY;ARCHITECTURE rtl OF unsigned_adder IS BEGIN result”按钮,将选中的节点移动到“Selected Nodes”列表中,然后单击“OK”按钮,关闭“Node Finder”对话框。第
41、4章原理图与宏功能模块设计(18)单击“Insert Node or Bus”对话框中的“OK”按钮,将选中的节点插入波形文件编辑器中。(19)选择“Edit”“End Time”命令,打开“End Time”对话框,在对话框中的“Time”编辑框中输入“100 s”,设定仿真时间长度为100 s。(20)在波形编辑器左侧的信号节点列表中的信号节点“a”上单击鼠标右键,选择“Value”“RandomValues”。图5.7 设置信号“a”之后的波形图第4章原理图与宏功能模块设计(22)采用步骤(20)介绍的方法,设置信号节点“b”的内容为随机数字信号,得到如图5.8所示的波形图。图5.8 设
42、置信号“b”之后的波形图(23)单击保存文件工具按钮,打开“另存为”对话框,按照系统默认,将波形文件保存为默认名称“unsigned_adder.vwf”。(24)单击开始仿真工具按钮,或者选择“Processing”“Start Simulation”命令,开始仿真,仿真完成后,弹出如图5.9所示的仿真报告。由图5.9可知,仿真后的数据结果与设计要求相符,设计是正确的。第4章原理图与宏功能模块设计(25)按照第4章介绍的方法定义器件和引脚,重新编译后,将数据下载到芯片上。至此,采用VHDL描述的无符号加法器的设计就完成了。图5.9 仿真报告第4章原理图与宏功能模块设计2.3 宏功能模块及其使
43、用宏功能模块及其使用2位十进制数字位移测量仪设计实例位十进制数字位移测量仪设计实例 本节将通过一个2位十进制数字位移测量仪的设计实例来介绍使用宏模块设计较复杂系统的具体方法。2位十进制数字位移测量仪可以测量滚轮的直线位移,需要实现以下功能:需要实现以下功能:(1)在在“direction”信号的控制下,对信号的控制下,对“distance pulse”脉脉冲进行加法计数或减法计数;冲进行加法计数或减法计数;(2)可实时显示可实时显示2位十进制计数值;位十进制计数值;(3)可对计数值手动清零;可对计数值手动清零;(4)可锁定计数值。可锁定计数值。原理如图2.73所示。第4章原理图与宏功能模块设计
44、当滚轮朝正方向滚动时,轴上的转向传当滚轮朝正方向滚动时,轴上的转向传感器输出感器输出“direction”信号为信号为“0”;当滚;当滚轮逆向滚动时,轮逆向滚动时,“direction”信号为信号为“1”。当滚轮滚动时,光电传感器会产生当滚轮滚动时,光电传感器会产生脉冲信号脉冲信号“distance pulse”。图2.73 位移测量仪原理当当“direction”信号为信号为“0”时,对时,对“distance pulse”进行加进行加法计数;当法计数;当“direction”信号为信号为“1”时,对时,对“distance pulse”信号进行减法计数,得到的计数值即为滚轮滚过的位移。信号
45、进行减法计数,得到的计数值即为滚轮滚过的位移。第4章原理图与宏功能模块设计1顶层设计顶层设计表表2.18 系统输入系统输入/输出引脚定义输出引脚定义名 称类型功 能Reset 输入系统复位信号Inpulse输入位移脉冲信号Direction输入移动方向信号Lock输入锁定显示值Lower_disp0.6输出个位数码管驱动信号High_disp0.6输出十位数码管驱动信号第4章原理图与宏功能模块设计可将系统分为计数部分和显示部分。计数部分用于对“distance pulse”信号进行BCD码计数,输出个位和十位BCD码计数值。计数部分的输入/输出引脚如表2.19所示。表表2.19 计数部分的输入
46、计数部分的输入/输出引脚输出引脚名 称类型功 能Reset输入系统复位信号Inpulse输入位移脉冲信号Direction输入移动方向信号Lock输入锁定显示值Lower_BCD1.44位输出个位计数BCD值High_BCD1.44位输出十位计数BCD值第4章原理图与宏功能模块设计显示部分用于将个位和十位的BCD计数值编码为7段数码管显示信号。显示部分的输入/输出引脚如表2.20所示。表表2.20 显示部分的输入显示部分的输入/输出引脚输出引脚名 称类型功 能Lower_BCD1.44位输入个位计数BCD值High_BCD1.44位输入十位计数BCD值Lower_disp1.77位输出个位数的
47、数码管显示驱动信号High_disp1.77位输出十位数的数码管显示驱动信号第4章原理图与宏功能模块设计第4章原理图与宏功能模块设计2计数部分设计本实例中采用2个带进位的双向十进制脉冲计数模块串联,实现2位十进制计数功能,其中的每块计数模块要求既可进行加法计数也可进行减法计数,并且能输出进位信号。带进位的双向计数模块的输入/输出引脚如表2.21所示。表表2.21 带进位的双向计数模块的输入带进位的双向计数模块的输入/输出引脚输出引脚名 称类 型功 能Reset输入系统复位信号Inpulse输入位移脉冲信号Direction输入移动方向信号Lock输入锁定显示值BCD_out1.44位输出BCD计数值Carry输出进/退位输出第4章原理图与宏功能模块设计第4章原理图与宏功能模块设计第4章原理图与宏功能模块设计3显示译码部分设计为实现实时同步显示数字,显示译码部分采用BCD码-7段译码器宏模块74247,该模块的符号如图2.101所示,其逻辑参数表如表2.24所示。图2.101 74247宏模块的符号第4章原理图与宏功能模块设计第4章原理图与宏功能模块设计第4章原理图与宏功能模块设计4 4编译、仿真检验编译、仿真检验完成逻辑设计后,需要设置设计的目标器件、器件的输入/输出引脚,编译设计,对设计进行时序仿真,最后下载到硬件中使用。