集成电路设计VHDL课程实验指导书

上传人:仙*** 文档编号:32355699 上传时间:2021-10-14 格式:DOC 页数:150 大小:1.93MB
收藏 版权申诉 举报 下载
集成电路设计VHDL课程实验指导书_第1页
第1页 / 共150页
集成电路设计VHDL课程实验指导书_第2页
第2页 / 共150页
集成电路设计VHDL课程实验指导书_第3页
第3页 / 共150页
资源描述:

《集成电路设计VHDL课程实验指导书》由会员分享,可在线阅读,更多相关《集成电路设计VHDL课程实验指导书(150页珍藏版)》请在装配图网上搜索。

1、FPGAFPGA:EP2C35F672C8NEP2C35F672C8N集成电路设计 VHDL实验指导书淮安信息职业技术学院电子工程学院电子器件教研室2012 年 12 月- I -目目 录录实验一QUARTUSII 图形输入电路的设计 .1实验二VHDL 格雷码编码器的设计.23实验三异步清零和同步使能的加法计数器.27实验四八位七段数码管动态显示电路的设计.31实验五数控分频器的设计.35实验六图形和 VHDL 混合输入的电路设计.38实验七实验七矩阵键盘显示电路的设计矩阵键盘显示电路的设计.43实验八实验八交通灯控制电路实验交通灯控制电路实验.51实验九实验九16*16 点阵显示实验点阵显

2、示实验.57实验十实验十直流电机的测速实验直流电机的测速实验.69实验十一 多功能数字钟的设计 .77实验十二 数字频率计的设计 .83实验十三 数字秒表的设计 .94实验十四 出租车计费器的设计 .100实验十五 四相步进电机控制实验 .103附录 I核心板硬件资源连接.111附录 II 实验箱硬件资源连接.130附录 III 开发平台部分模块的电路图 .143- 1 -实验一实验一QUARTUSII 图形输入电路的设计图形输入电路的设计一、一、 实验目的实验目的1、通过一个简单的 38 译码器的设计,掌握组合逻辑电路的设计方法2、初步了解 QUARTUSII 原理图输入设计的全过程。3、掌

3、握组合逻辑电路的静态测试方法。二、二、 实验原理实验原理3-8译码器三输入,八输出。当输入信号按二进制方式的表示值为N时, 输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示 无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组 合中仅有一位为高电平的情况下,能表示所有的输入组合。其真值表如表1-1 所示:表 1-1 三-八译码器真值表输入输出ABCD7D6D5D4D3D2D1D0000001010011100101111110000000100000010000001000000100000010000001000000100000010000000译码器不

4、需要像编码器那样用一个输出端指示输出是否有效。但可以在输 入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表- 2 -拨动开关的输出对应FPGA 管脚名称示无任何信号。本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。三、三、 实验内容实验内容在本实验中,用三个拨动开关来表示三八译码器的三个输入(A、B、C),用八个 LED 来表示三八译码器的八个输出(D0-D7),通过输入不同的值来观察输入的结果与三八译码器的真值表(表 1-1)是否一致。实验箱中的拨动开关与 FPGA的接口电

5、路如下图 1-1 所示,当开关闭合(拨动开关的档位在下方)时其输出为低电平,反之输出高电平。其电路与 FPGA 的管脚连接如表 1-2 所示。图 1-1 拨动开关与 FPGA 接口电路表 1-2 拨动开关与 FPGA 管脚连接表信号名称对应 FPGA 管脚名信号说明K1H8从 K1 输出到 FPGA 的 H8K2J8从 K2 输出到 FPGA 的 J8K3J9从 K3 输出到 FPGA 的 J9K4A4从 K4 输出到 FPGA 的 A4K5B4从 K5 输出到 FPGA 的 B4K6A5从 K6 输出到 FPGA 的 A5K7B5从 K7 输出到 FPGA 的 B5K8A6从 K8 输出到

6、FPGA 的 A6- 3 -LED 灯与 FPGA 的接口电路如图 1-2 所示,当 FPGA 与其对应的端口为高电平时 LED 就会发光,反之 LED 灯灭。其与 FPGA 对应的管脚连接如表 1-3 所示。图 1-2 LED 灯与 FPGA 接口电路表 1-3 LED 灯与 FPGA 管脚连接表信号名称对应 FPGA 管脚名说明LED1G13从 FPGA 的 G13 至 LED1LED2G15从 FPGA 的 G15 至 LED2LED3G14从 FPGA 的 G14至 LED3LED4H12从 FPGA 的 H12 至 LED4LED5H11从 FPGA 的 H11 至 LED5LED6

7、J10从 FPGA 的 J10 至 LED6LED7L9从 FPGA 的 L9 至 LED7LED8H10从 FPGA 的 H10 至 LED8四、四、 实验步骤实验步骤下面将通过这个实验,向读者介绍 QUARTUSII 的项目文件的生成、编译、管脚 分配以及时序仿真等的操作过程。1、建立工程文件1)选择开始程序AlteraQuartusII5.1,运行 QUARTUSII 软件。或者双击 桌面上的 QUARTUSII 的图标运行 QUARTUSII 软件,出现如图 1-3 所示,如果是第 一次打开 QUARTUSII 软件可能会有其它的提示信息,使用者可以- 4 -根据自己的实际 情况进行设

8、定后进入图 1-3 所示界面。图 1-3 QUARTUSII 软件运行界面2)选择软件中的菜单 FileNew Project Wizard,新建一个工程。如图 1-4 所示。3) 点击图 1-4 中的 NEXT 进入工作目录, 工程名的设定对话框如图 1-5 所示。第一个输入框为工程目录输入框, 用户可以输入如 e:/eda 等工作路径来设定工程的目录,设定好后,所有的生成文件将放入这个工作目录。第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。用户可以设定如EXP1,一般情况下工程名称与实体名称相同。使用者也可以根据自已的实际情况来设定。- 5 -图 1-4 新建工程对话框图

9、 1-5 指定工程名称及工作目录4) 点击 NEXT, 进入下一个设定对话框, 按默认选项直接点击 NEXT 进行器件选择对话框。如图 1-6 所示。这里我们以选用 CycloneII 系列芯片 EP2C35F672C8为例进行介绍。用户可以根据使用的不同芯片来进行设定。- 6 -图 1-6 器件选择界面首先在对话框的左上方的 Family 下拉菜单中选取 CycloneII,在中间右边的 Speed grade 下拉菜单中选取 8,在左下方的 Available devices 框中选取 EP2C35F672C8,点击 NEXT 完成器件的选取,进入 EDA TOOL设定界面如图1-7所示。

10、图 1-7 EDA TOOL 对话框5)按默认选项,点击 NEXT 出现新建工程以前所有的设定信息,如图 1-8 所示,点击 FINISH 完成新建工程的建立。- 7 -图 1-8 新建工程信息2、建立图形设计文件1) 在创建好设计工程后, 选择 FileNEW菜单,出现图 1-9 所示的新建设 计文件类型选择窗口。这里我们以建立图形设计文件为例进行说明,其它设计 输入方法与之基本相同。图 1-9 新建设计文件选择窗口2)在 New对话框(图1-9)中选择 Device Design Files页下的Block Diagram/Schematic File,点击 OK 按钮,打开图形编辑器对话

11、框,如图 1-10 - 8 -所示。图中标明了常用的每个按钮的功能。图 1-10 QUARTUSII 图形编辑器对话框QUARTUSII图形编 辑器也 称块编辑器( Block Editor ),用于 以原理图(Schematics)和结构图(Block Diagrams)的形式输入和编辑图形设计信息。QUARTUSII 图形编辑器可以读取并编译结构图设计文件(Block Design File)和 MAXPLUSII 图形设计文件 (Graphic Design Files), 可以在 QUARTUSII 软件 中打开图形设计文件并将其另存为结构图设计文件。在 QUARTUSII 图形编辑器

12、窗口(图 1-10)中,根据个人爱好,可以随时 改变 Block Editor 的显示选项,如导向线和网格间距、橡皮筋功能、 颜色以及基 本单元和块的属性等。3)在这里以用原理图输入设计一个三八译码器为例,介绍基本单元符号输入方法的步骤。在图 1-10 所示的图形编辑器窗口的工件区双击鼠标的左键,或点击图中的符号工具按钮,或选择菜单 EditInsert Symbol,则弹出如图 1-11所示的 Symbol 对话框。- 9 -图 1-11 Symbol 对话框4)用鼠标点击单元库前面的“+”号,展开单元库,用户可以选择所需要 的图元或符号,该符号则显示在右边的显示符号窗口,用户也可以在符号名

13、称 里输入你所需要的符号名称,点击 OK 按钮,所选择的符号将显示在图形编辑 器的工件工域。5) 参考图 1-12 所示, 将要选择的器件符号放置在图形编辑器的工件区域, 用正交节点工具将原件边接起来,然后定义端口的名称。在这个例子里,定义 三个输入为 A、B、C,定义八个输出为 D0、D1、D2、D3、D4、D5、D6、D7。 用户也可以根据自己的习惯来定义这些端口名称。6) 完成图形编辑的输入之后, 需要保存设计文件或重新命名设计文件。 选择 FileSave As项,出现如图 1-13 所示对话框,选择好文件保存目录,并在文 件名栏输入设计文件名。如需要将设计文件添加到当前工程中,则选择

14、对话框下面的 Add file to current project复选框,单击保存按钮即可保存文件。需要注意的是, 在整个设计文件保存的过程当中, 都需要遵循设计输入法的一般- 10 -规则。图 1-12 设计文件的输入图 1-13 保存设计文件对话框3、对设计文件进行编译QUARTUSII 编译器窗口包含了对设计文件处理的全过程。在 QUARTUSII软件中选择 Tool Compiler Tool菜单项, 则出现 QUARTUSII 的编译器窗口, 如图 1-14 所示,图中标明了全编译过程各个模块的功能。- 11 -图 1-14 QUARTUSII 编译器窗口需要说明的是在进行设计文件

15、的综合和分析,也可以单独打开某个分析综 合过程不必进行全编译界面。当完成上述窗口的设定后,点击 START 按钮进行 设计文件的全编译。如果文件有错,在软件的下方则会提示错误的原因和位置,以便于使用者进行修改直到设计文件无错。整个编译完成,软件会提示编译成功,如图 1-15 所示。图 1-15 全编译成功界面4、管脚分配在前面选择好一个合适的目标器件(在这个实验中选择为EP2C35F672C8,)完成设计的分析综合过程,得到工程的数据文件以后,需要对设计中的输入、输出引脚指定到具体的器件管脚号码,指定管脚号码称为管 脚分配或管脚锁定。这里介绍两种方法进行管脚锁定。- 12 -1)点击 Assi

16、gnments 菜单下面的 Assignment Editor,进入到引脚分配窗口。 如图 1-16 所示。图 1-16 进入引脚分配界面首先将要分配管脚的信号放置在 To下方。双击 To下方的New,如图 1-15所示则会出现如图 1-17所示界面。图 1-17 信号选择对话框选择Node Finder进入如图1-18 所示的Node Finder 对话框界面,按图1-18中样例设置参数。在 Filter窗口选择 Pins:all,在 Named 窗口中输入“*” ,点击 List在 Nodes Found窗口出现所有信号的名称,点击中间的按钮则Selected Nodes 窗口下方出现被选

17、择的端口名称。双击 OK 按钮,完成设置。进入管脚分配窗口,如图 1-19 所示。- 13 -图 1-18 Node Finder 对话框图 1-19 管脚分配在图1-19中以锁定端口A的管脚为例,其它端口的管脚锁定与其基本一 致。选择端口A的对应 Assignment Name待其变为蓝色,双击之,出现下拉菜 单选取如图 1-19所示的 Location(Accepts wildcards/groups)选项。选择端口 A 的对应 Value栏,待其变为蓝色,依照表 1-2 和表 1-3 所示的硬件与 FPGA 的 管脚连接表(或附录)),输入对应的管脚名 AB8,按回车键,软件将自动将其改

18、为 PIN_AB8,同时蓝色选择条会自动跳转到 Value 栏的下一行,这表明软件已经将输入端口 A 分配到 FPGA 的 AB8 引脚上,如图 1-20所示。- 14 -图 1-20 给 A 端口进行管脚分配用同样的方法, 依照表 1-2 和表 1-3 所示的硬件与 FPGA 的管脚连接表 (或 附录一)对其它端口进行管脚分配,如图 1-21 所示。图 1-21 所有引脚全部分配结束后的软件窗口2)点击 Assignments 菜单下面的 Pin Planner(也可直接点击工具栏上的 引脚分配按钮)出现如图 1-22 所示的所选目标芯片的管脚分布图。- 15 -图 1-22 目标芯片的管脚

19、分布图 图 1-23 管脚分配对话框与上面的方法相同, 依照表 1-2 和表 1-3 所示的硬件与 FPGA的管脚连接 表(或附录),如端口 A 对应的管脚为 AB8,则双击 AB8管脚出现如图 1-23 所示对话框。在图1-23 对话框中的Node Name 框中输入对应的端口名A 或者通过下拉菜单选取对应的端口名称 A,点击 OK按钮,完成对端口 A的管脚分配。用相同的方法,依照下表 1-4 对其它端口进行管脚分配,管脚分配完后,如下图 1-24 所示。- 16 -图 1-24 所有引脚全部分配结束后的软件窗口表 1-4 端口管脚分配表端口名使用模块信号对应 FPGA 管脚说明A拨动开关

20、K3J9B拨动开关 K2J8C拨动开关 K1H8译码器的三位输入D0LED 灯 LED1G13D1LED 灯 LED2G15D2LED 灯 LED3G14D3LED 灯 LED4H12D4LED 灯 LED5H11D5LED 灯 LED6J10D6LED 灯 LED7L9D7LED 灯 LED8H10译码器的 八位输出在图 1-24中,棕色标出的管脚为已被分配锁定的管脚。值得注意的是当管脚分配完之后一定要进行再进行一次全编译,以使分配的管脚有效。5、对设计文件进行仿真1) 创建一个仿真波形文件, 选择QUARTUSII软件 FileNew, 进行新建 文件对话框。 如图 1-25 所示。 选取

21、对话框的 Other File标签页, 从中选取 Vector - 17 -Waveform File, 点击 OK 按钮, 则打开了一个空的波形编辑器窗口, 如图 1-26 所示。图 1-25 新建文件对话框图 1-26 波形编辑器2)设置仿真结束时间,波形编辑器默认的仿真结束时间为 1S,根据仿真需要,可以自由设置仿真的结束时间。选择 QUARTUSII 软件的 EditEnd Time 命令,弹出线路束时间对话框,在 Time 框办输入仿真结束时间,点击 OK 按钮完成设置。3) 加入输入、 输出端口,在波形编辑器窗口左边的端口名列表区点击鼠标右键,在弹出的右键菜单中选择 Insert

22、Node or Bus命令,在弹出的 Insert Node or Bus 对话框如图 1-27 所示界面中点击 Node Finder按钮。图 1-27 Insert Node or Bus 对话框- 18 -在出现的 Node Finder 界面中,如图 1-28 所示,在 Filter 列表中选择 Pins: all,在 Named 窗口中输入“*” ,点击 List 在 Nodes Found 窗口出现所有信号的名称,点击中间的按钮则 Selected Nodes 窗口下方出现被选择的端口名称。双击OK按钮,完成设置,回到图 1-27 所示的 Insert Node or Bus 对话

23、框,双击OK按钮,所有的输入、输出端口将会在端口名列表区内显示出来,如图 1-29所示。图 1-28 Node Finder 对话框图 1-29 在波形编辑器中加入端口- 19 -4)编辑输入端口波形,即指定输入端口的逻辑电平变化,在如图1-29所示的波形编辑窗口中,选择要输入波形的输入端口如A端口,在端口名显示区左边的波形编辑器工具栏中有要输入的各种波形,其按钮说明如图 1-30 所示。根据仿真的需要输入波形。完成后如图 1-31所示。最后选择软件的 FileSave进行保存。图 1-30 波形编辑器工具栏图 1-31 编辑输入端口波形5)指定仿真器设置,在仿真过程中有时序仿真和功能仿真之分

24、,在这里- 20 -介绍功能仿真。 在 QUARTUSII软件中选择 ToolSimulator Tool 命令, 打开仿真器工具窗口,如图 1-32 所示。图 1-32 仿真器工具窗口按图 1-32上的提示, 首先产生功能仿真网表文件, 点击产生功能仿真网表的按钮 Generate Functional Simulation Netlist,产生功能仿真网表,然后点击开始仿真的 START 按钮开始进行仿真,直到仿真进度条为 100%完成仿真。点击仿真报告窗口按钮 Report,观察仿真波形。如图 1-33 所示。图 1-33 仿真波形6、从设计文件到目标器件的加载完成对器件的加载有两种形式

25、,一种是对目标器件进行加载文件,一种是对目标器件的配置芯片进行加载。这里我们介绍对目标器件 EP2C35F672C8- 21 -进行加载的方法。1)使用下载电缆将 PC 机与实验系统连接起来。2)选择 QUARTUSII 软件的 ToolProgrammer 命令,进行编程器窗口,如图 1-34 所示,如果没有设置编程硬件,则编程硬件类型为 No Hardware,需要 对编程硬件进行设置。点击 Hardware Setup编程硬件设置按钮,进行如图 1-35 所示的编程硬件设置对话框。图 1-34 编程器窗口图 1-35 编程器硬件设置对话框3)点击 Add Hardware 按钮,出现 A

26、dd Hardware 对话框,如图 1-36 所示。- 22 -图 1-36 编程硬件选择对话框4) 在 Add Hardware 对话框中, 从 Hardware type 列表中选择所需要硬件类型,如果是 USB 接口的请参照用户使用手册中的 USB 电缆的安装与使用,如果使用的是并口下载线则选取如图 1-36 所示的硬件类型,点击 OK 按钮,完成对硬件类型的设置。回到编程器硬件设置窗口, 点击 Close 按钮退出设置。则在编程器对话框中的编程硬件类型会出现刚才选取的编程器硬件。5) 如果软件已运行一个工程, 则在打开编程器的时候, 编程器窗口会自动出现这个工程文件要加载到目标器件的

27、文件,如果要加载其它文件可以从其它 地方进行添加更改。 选好加载文件后, 再点选 Progam/Configure, 编程模式选取 JTAG 模式, 点击 STRAT 进行文件加载, 直到加载进度变为 100%, 文件成功加 载完成。五、实验现象与结果五、实验现象与结果文件加载到目标器件后,拨动拨动开关,LED 灯会按表 1-1 所示的真值表对应的点亮。六、实验报告六、实验报告1、进一步熟悉和理解 QUARTUSII 软件的使用方法。2、绘出仿真波形,并作说明。- 23 -实验二实验二VHDL 格雷码编码器的设计格雷码编码器的设计一、实验目的一、实验目的1、了解格雷码变换的原理。2、进一步熟悉

28、 QUARTUSII 软件的使用方法和 VHDL 输入的全过程。3、进一步掌握实验系统的使用。二、实验原理二、实验原理格雷(Gray)码是一种可靠性编码,在数字系统中有着广泛的应用。其特点是任意两个相邻的代码中仅有一位二进制数不同,因而在数码的递增和递减运算过程 中不易出现差错。但是格雷码是一种无权码,要想正确而简单的和二进制码进行转换,必须找出其规律。根据组合逻辑电路的分析方法,先列出其真值表再通过卡诺图化简,可以很快 的找出格雷码与二进制码之间的逻辑关系。其转换规律为:高位同,从高到低看异 同,异出1,同出0。也就是将二进制码转换成格雷码时,高位是完全相同的,下一位格雷码是1还是0,完全是

29、相邻两位二进制码的“异”还是“同” 来决定。下面举一个简单的例子加以说明。假如要把二进制码10110110转换成格雷码,则可以通过下面的方法来完成,方法如图2-1。图 2-1 格雷码变换示意图因此,变换出来的格雷码为 11101101。三、实验内容三、实验内容本实验要求完成的任务是变换 8 位的二进制码到 8 位的格雷码。实验中- 24 -用八位拨动开关模块的 K1K8 表示 8 位二进制输入,用 LED 模块的 LED1LED8来表示转换的实验结果八位格雷码。 实验 LED 亮表示对应的位为1 , LED 灭表 示对应的位为0 。通过输入不同的值来观察输入的结果与实验原理中的转换规 则是否一

30、致。实验箱中的拨动开关、与 FPGA 的接口电路,LED 灯与 FPGA 的接口 电路以及拨动开关、LED 与 FPGA 的管脚连接在实验一中都做了详细说明,这里不 在赘述。四、实验步骤四、实验步骤1、打开 QUARTUSII 软件,新建一个工程。2、建完工程之后,再新建一个 VHDL File。新建过程如下:1)选择 QUARTUSII 软件中的 FileNew 命令,出现 New对话框。如图 2-2所示。图 2-2 新建设计文件选择窗口2) 在 New 对话框 (图 2-2) 中选择 Device Design Files 页下的 VHDL File,点击 OK 按钮,打开 VHDL 编辑

31、器对话框,如图 2-3 所示。图 2-3 VHDL 编辑窗口- 25 -3、按照实验原理和自己的想法,在 VHDL 编辑窗口编写VHDL 程序,参考程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-entity exp2 is port( K1,K2,K3,K4,K5,K6,K7,K8 : in std_logic; -输入:8位格雷码 D1,D2,D3,D4,D5,D6,D7,D8 : out std_logic -转换结果 )

32、; end exp2;-architecture behave of exp2 is begin process(K1,K2,K3,K4,K5,K6,K7,K8) -格雷码转换 begin D1=K1; D2=K1 xor K2; D3=K2 xor K3; D4=K3 xor K4; D5=K4 xor K5; D6=K5 xor K6; D7=K6 xor K7; D80);- 计数器异步复位 elsif clkevent and clk=1 then-检测时钟上升沿 if en=1 then-检测是否允许计数(同步使能) if cqi0); end if; end if; end if;

33、 if cqi9 then cout=1;-输出进位信号 else cout=0; end if; cq=cqi;-计数值向端口输出 end process; end behave;4、 编写完 VHDL 程序后,保存起来。方法同实验一。5、对自己编写的 VHDL 程序进行编译并仿真,对程序的错误进行修改。6、编译仿真无误后,依照拨动开关、LED与 FPGA 的管脚连接表(表 1-1、表1-2)或参照附录进行管脚分配。表 3-3 是示例程序的管脚分配表。分配- 30 -完成 后,再进行全编译一次,以使管脚分配生效。表 3-3 端口管脚分配表端口名使用模块信号对应 FPGA 管脚说明CLK数字信

34、号源C13时钟为 1HZEN拨动开关 K1H8使能信号RET按键开关 S1P25复位信号CQ0LED 灯 LED1G13CQ1LED 灯 LED2G15CQ2LED 灯 LED3G14CQ3LED 灯 LED4H12计数输出COUTLED 灯 LED8H10COUT 为进位信号7、用下载电缆通过 JTAG 口将对应的 sof 文件加载到 FPGA 中。观察实验结果 是否与自己的编程思想一致。五、实验现象与结果五、实验现象与结果以设计的参考示例为例, 当设计文件加载到目标器件后, 将数字信号源的时钟 选择为 1HZ,使拨动开关 K1 置为高电平(使拨动开关向上),四位 LED 会按照实验原理中依

35、次被点亮,当加法器加到 9 时,LED8(进位信号)被点亮。当复位键(按键开关的 S1 键)按下后,计数被清零。如果拨动开关 K1 置为低电平(拨动开关向下)则加法器不工作。六、实验报告六、实验报告1、绘出仿真波形,并作说明。2、写出在 VHDL 编程过程中需要说明的规则。3、将实验原理、 设计过程、 编译仿真波形和分析结果、 硬件测试结果记录下来。4、改变时钟频率,看实验现象会有什么改变,试解释这一现象。- 31 -实验四实验四八位七段数码管动态显示电路的设计八位七段数码管动态显示电路的设计一、实验目的一、实验目的1、了解数码管的工作原理。2、学习七段数码管显示译码器的设计。3、学习 VHD

36、L 的 CASE 语句及多层次设计方法。二、实验原理二、实验原理七段数码管是电子开发过程中常用的输出显示设备。 在实验系统中使用的是两 个四位一体、共阴极型七段数码管。其单个静态数码管如下图 4-1 所示。图 4-1 静态七段数码管由于七段数码管公共端连接到 GND(共阴极型),当数码管的中的那一个段被输 入高电平,则相应的这一段被点亮。反之则不亮。四位一体的七段数码管在单个静态 数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的 a、b、 c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。三、实验内容三、实验内

37、容本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上 显示相应的键值。在实验中时,数字时钟选择 1KHZ 作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。实验箱中的拨动开关与 FPGA 的接口电路,以及拨动开关 FPGA 的管脚连接在实验一中都做了详细说明,这里不在赘述。数码管显示- 32 -模块的电路原理如图 4-2 所示,表 4-1 是其数码管的输入与 FPGA的管脚连接表。图 4-2 数字时钟信号模块电路原理表 4-1 数码管与 FPGA 的管脚连接表信号名称对应 FPGA 管脚名说明7SEG-AF13七段码管 A 段

38、输入信号7SEG-BF14七段码管 B 段输入信号7SEG-CF15七段码管 C 段输入信号7SEG-DE15七段码管 D 段输入信号7SEG-EF16七段码管 E 段输入信号7SEG-FF17七段码管 F 段输入信号7SEG-GE18七段码管 G 段输入信号7SEG-DPF18七段码管 dp 段输入信号7SEG-SEL0G18七段码管位选输入信号7SEG-SEL1G17七段码管位选输入信号7SEG-SEL2G16七段码管位选输入信号四、实验步骤四、实验步骤1、打开 QUARTUSII 软件,新建一个工程。2、建完工程之后,再新建一个 VHDL File,打开 VHDL 编辑器对话框。3、 按

39、照实验原理和自己的想法,在 VHDL 编辑窗口编写 VHDL 程序,程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;- 33 -use ieee.std_logic_unsigned.all;-entity exp4 is port( clk : in std_logic; -定义动态扫描时钟信号 key : in std_logic_vector(3 downto 0); -定义四位输入信号 ledag : out std_logic_vector(6 downto 0); -定义七位输出信

40、号 del : out std_logic_vector(2 downto 0) -定义八位数码管位置显示信号 ); end exp4;-architecture whbkrc of exp4 is begin process(clk) variable dount : std_logic_vector(2 downto 0); begin if clkevent and clk=1 then -检测时钟上升沿 dount:=dount+1; -计数器 dount 累加 end if; del ledag ledag ledag ledag ledag ledag ledag ledag le

41、dag ledag ledag ledag ledag ledag ledag ledag null; end case; end process; end whbkrc;4、 编写完 VHDL 程序后,保存起来。方法同实验一。5、对自己编写的 VHDL 程序进行编译并仿真,对程序的错误进行修改。6、编译仿真无误后,依照拨动开关、数码管与 FPGA 的管脚连接表(表 1-1、表4-1)或参照附录进行管脚分配。表 4-2 是示例程序的管脚分配表。分- 34 -配完成后,再进行全编译一次,以使管脚分配生效。表 4-2 端口管脚分配表端口名使用模块信号对应 FPGA 管脚说明CLK数字信号源C13时

42、钟为 1KHZKEY0拨动开关 K1H8KEY1拨动开关 K2J8KEY2拨动开关 K3J9KEY3拨动开关 K4A4二进制数据输入LEDAG0数码管 A 段F13LEDAG1数码管 B 段F14LEDAG2数码管 C 段F15LEDAG3数码管 D 段E15LEDAG4数码管 E 段F16LEDAG5数码管 F 段F17LEDAG6数码管 G 段E18DEL0位选 DEL0F18DEL1位选 DEL1G18DEL2位选 DEL2G17十六进制数据 输出显示7、用下载电缆通过 JTAG 口将对应的 sof 文件加载到 FPGA 中。 观察实验结果是否与自己的编程思想一致。五、实验现象与结果五、

43、实验现象与结果以设计的参考示例为例, 当设计文件加载到目标器件后, 将数字信号源模块的 时钟选择为 1KHZ,拨动四位拨动开关,使其为一个数值,则八个数码管均显示拨动 开关所表示的十六进制的值。六、实验报告六、实验报告1、绘出仿真波形,并作说明。2、明确扫描时钟是如何工作的,改变扫描时钟会有什么变化。3、实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录- 35 -下来。- 36 -实验五实验五数控分频器的设计数控分频器的设计一、实验目的一、实验目的1、学习数控分频器的设计、分析和测试方法。2、了解和掌握分频电路实现的方法。3、掌握 EDA 技术的层次化设计方法。二、实验原理二、实验

44、原理数控分频器的功能就是当输入端给定不同的输入数据时,将对输入的时钟信号有不同的分频比, 数控分频器就是用计数值可并行预置的加法计数器来设计完成的,方法是将计数溢出位与预置数加载输入信号相接得到。三、实验内容三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过输入八位的拨动开关输入不同的数据,改变分频比, 使输出端口输出不同频率的时钟信号, 过到数控分频的效果。 在实验中时, 数字时钟选择 1KHZ 作为输入的时钟信号 (频率过高观 察不到 LED 的闪烁快慢),用八个拨动开关做为数据的输入, 当八个拨动开关置为一个二进制数时, 在输出端口输出对应频率的时钟信号, 用户可以用示波器接信号

45、输出模块观察频率的变化。 也可以使输出端口接 LED 灯来观察频率的变化。在此实验中我们把输入接入 LED 灯模块。实验箱中的拨动开关、LED 与 FPGA 的接口电路,以及拨动开关、LED 与 FPGA 的管脚连接在实验一中都做了详细说明,这里不在赘述。四、实验步骤四、实验步骤1、打开 QUARTUSII 软件,新建一个工程。2、建完工程之后,再新建一个 VHDL File,打开 VHDL 编辑器对话框。3、按照实验原理和自己的想法, 在 VHDL 编辑窗口编写 VHDL 程序, 程序如下:- 37 -library ieee;use ieee.std_logic_1164.all;use

46、ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-entity exp5 is port( inclk : in std_logic; -定义时钟信号 data : in std_logic_vector(7 downto 0); -输入控制的数据 fout : out std_logic -分频输出 ); end exp5;-architecture behave of exp5 issignal full :std_logic; begin process(inclk) variable cdount1 : std_logi

47、c_vector(7 downto 0); begin if inclkevent and inclk=1 then -检测时钟上升沿 if cdount1=11111111 then cdount1:=data; full=1; else cdount1:=cdount1+1; full=0; end if; end if; end process;process(full) variable cdount2 : std_logic; begin if fullevent and full=1 then -检测时钟上升沿 cdount2:= not cdount2; if cdount2=1

48、 then fout=1; else foutOpen 命令,如图 6-1 所示,打开复制到当前工作目录下和其- 40 -中一个源程序代码,如 EXP3.VHD 程序。图 6-1 打开一个设计文件4、在 File 菜单中选择 Create/Update 项,进而选择 Create Symbol for Current File,点击确定按 钮, 即可创 建一 个代表 刚才 打开的 设计 文件功 能的符号(.bsf),如图 6-2 所示。如果该文件对应的符号文件已经创建过,则执行该操作时会弹出提示信息,询问是否要覆盖现存的符号文件。用户可以根据自己的意愿进行选择。图 6-2 从现行文件创建模块符

49、号文件5、用同样的方法对其它设计文件(EXP4.VHD、EXP5.VHD)进行模块- 41 -符号文件的创建。6、模块符号文件创建完成后,再新建一个图形编辑文件,打开图形编辑器对话框。在图形编辑器窗口的工件区双击鼠标的左键,或点击图中的符号工具按钮,或选择菜单 EditInsert Symbol,则弹出如图 6-3 所示的 Symbol对话框。图 6-3 Symbol 对话框7、 在 Symbol 对话框(图 6-3)中的 Project 项下会出现前面创建的模块符号文件(EXP3、EXP4、EXP5) ,我们现在就可以任意调用这些功能模块符号文件。8、 选取这些模块符号文件放置到工作区,调入

50、需要的模块符号以后,进行符号之间的连线,以及放置输入、输出或双向引脚。需要说明的是,在这个实验中, 因为输入的数据占用了八位的拨动开关,所以做为同步使能端的信号 EN 我们加入了一个 VCC 信号,使使能端信号 EN 有效。所有设计完成后的电路如图 6-4 所示。- 42 -图 6-4 设计图形符号文件9、 对自己编写的图形符号输入文件程序进行保存,然后编译并仿真,对程序的错误进行修改。10、编译仿真无误后,依照拨动开关、LED 与 FPGA 的管脚连接表(表 1-1、表 1-2)或参照附录进行管脚分配。表 6-1 是示例程序的管脚分配表。分配完成后,再进行全编译一次,以使管脚分配生效。表 6

51、-1 端口管脚分配表端口名使用模块信号对应 FPGA 管脚说明CLK数字信号源C13时钟为 1KHZDATA0拨动开关 K1H8DATA 1拨动开关 K2J8DATA 2拨动开关 K3J9DATA 3拨动开关 K4A4DATA 4拨动开关 K5B4DATA 5拨动开关 K6A5DATA 6拨动开关 K7B5DATA 7拨动开关 K8A6显示时钟控控制RET按键开关 S1P25复位信号COUTLED 灯 LED1AA17进位标志位LEDAG0数码管 A 段F13LEDAG1数码管 B 段F14LEDAG2数码管 C 段F15LEDAG3数码管 D 段E15LEDAG4数码管 E 段F16LEDA

52、G5数码管 F 段F17LEDAG6数码管 G 段E18DEL0位选 DEL0F18DEL1位选 DEL1G18DEL2位选 DEL2G17数据显示11、用下载电缆通过 JTAG 口将对应的 sof 文件加载到 FPGA 中。观察实验结果 是否与自己的编程思想一致。五、实验现象与结果五、实验现象与结果以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块的时钟选择为 1KHZ,拨动八位拨动开关,使其为一个数值,则八位数码管按一定的速率开始显示 “0-F” , 当数码管显示 A-F 时 LED 灯 LED1 开始被点亮,- 43 -显示其它数值 时熄灭。 按 S1 键显示的数值又从

53、0 开始, 拨动八位拨动开关, 置于其它数据, 数码 管的显示速率会发生改变。六、实验报告六、实验报告1、出仿真波形,并作说明。2、自己设计文件,然后通过设计文件到模块符号文件的转换,设计自己的电路 并在实验系统中验证。进一步掌握这种方法。3、写出在软件中通过其它方法从设计文件到模块符号文件的转换过程。4、将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。- 44 -实验七实验七矩阵键盘显示电路的设计矩阵键盘显示电路的设计一、一、 实验目的实验目的1、了解普通 44 键盘扫描的原理。2、进一步加深七段码管显示过程的理解。3、了解对输入/输出端口的定义方法。二、实验原理二、实验

54、原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软 件实现键盘扫描。作为一个嵌入系统设计人员,总是会关心产品成本。目前有很 多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系 统的重复开发成本,且只需要很少的 CPU 开销。嵌入式控制器的功能能强,可 能充分利用这一资源,这里就介绍一下软键盘的实现方案。图 7-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图7-1所示的简单电路,微处理器可以容易地检测到闭合。当开关打开时,通过处理器的 I/O口的一个上拉电阻提供逻辑 1;当开关闭合时,处理器的/IO口的输入将被拉低得到逻辑 0。可遗憾的

55、是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的 1或者 0。尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。当触点闭合时,其弹起就像一个球。弹起效果将产生如图 7-2所示的好几个脉冲。弹起的持续时间- 45 -通常将维持在 5ms30ms 之间。如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。图 7-2 按键抖动键盘上阵列这些开关最有效的方法 (当需要5个以上的键时) 就形成了一个如图 7-3 所示的二维矩阵。当行和列的数目一样多时,也就是方型的矩阵

56、,将产生一个最优化的布列方式(I/O 端被连接的时候),一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。 每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。图 7-3 矩阵键盘键盘扫描的实现过程如下:对于44键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出 4 行为高电平,然后输出 4 列为低电平,在读入输- 46 -出的4行的值,通常高电平会被低电平拉低,如果读入的 4 行均为高电平,那么肯定没有按键按下,否则,如果读入的4 行有一位为低电平,

57、那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出 4 列为高电平,然后在输出4 行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个 8 位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在 7 段码管显示。三三、实实验验内内容容本实验要求完成的任务是通过编程实现对4X4矩阵键盘按下键的键值的读 取,并在数码管上完成一定功能(如移动等)的显示。按键盘的定义,按下“*” 键则在数码管是显示“E”键值。按下“#”键在数码管上显示“F”键值。其它的键则按键盘上的标识进行显示。在此实验中

58、数码管与 FPGA的连接电路和管脚连接在以前的实验中都做了详细说明,这里不在赘述。本实验箱上的 4X4 矩阵键盘的电路原理如图 7-4 所示。与 FPGA 的管脚连接如表 7-1 所示。图 7-4 4X4 矩阵键盘电路原理图- 47 -表 7-1 4X4 矩阵键与 FPGA 的管脚连接表信号名称对应 FPGA 管脚名说明KEY-C0B6钜阵键盘的第 1 列选择KEY-C1A7钜阵键盘的第 2 列选择KEY-C2B7钜阵键盘的第 3 列选择KEY-C3A8钜阵键盘的第 4 列选择KEY-R0B8钜阵键盘的第 1 行选择KEY-R1A9钜阵键盘的第 2 行选择KEY-R2B9钜阵键盘的第 3 行选

59、择KEY-R3E5钜阵键盘的第 4 行选择四四、实实验验步步骤骤1、打开 QUARTUSII 软件,新建一个工程。2、建完工程之后,再新建一个 VHDL File,打开 VHDL编辑器对话框。3、按照实验原理和自己的想法,在 VHDL 编辑窗口编写 VHDL 程序,程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-entity exp10 is port( Clk : in std_logic; -时钟信号 Kr : in std

60、_logic_vector(3 downto 0); -键盘行 Kc : buffer std_logic_vector(3 downto 0); -键盘列 a,b,c,d,e,f,g : out std_logic; -七段码管显示 Sa,sb,sc : buffer std_logic); -七段码管片选end exp10;-architecture behave of exp10 is signal keyr,keyc : std_logic_vector(3 downto 0); signal kcount : std_logic_vector(2 downto 0); signal

61、dcount : std_logic_vector(2 downto 0); signal kflag1,kflag2 : std_logic; signal buff1,buff2,buff3,buff4,buff5,buff6,buff7,buff8 : integer range 0 to 15; signal Disp_Temp : integer range 0 to 15; signal Disp_Decode : std_logic_vector(6 downto 0); begin process(Clk) -扫描键盘 begin if(Clkevent and Clk=1)

62、then if(Kr=1111) then- 48 - kflag1=0; kcount=kcount+1; if(kcount=0) then kc=1110; elsif(kcount=1) then kc=1101; elsif(kcount=2) then kc=1011; else kc=0111; end if; else kflag1=1; keyr=Kr; keyc=Kc; end if; kflag2=kflag1; end if; end process; process(Clk) -显示右移 begin if(Clkevent and Clk=1) then if(kfl

63、ag1=1 and kflag2=0 ) then buff1=buff2; buff2=buff3; buff3=buff4; buff4=buff5; buff5=buff6; buff6=buff7; buff7buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8buff8Disp_TempDisp_TempDisp_TempDisp_TempDisp_TempDisp_TempDisp_TempDisp_Temp=buff8; -1 end case

64、; end process; process(Clk) begin if(Clkevent and Clk=1) then -扫描累加 dcount=dcount+1; a=Disp_Decode(0); b=Disp_Decode(1); c=Disp_Decode(2); d=Disp_Decode(3); e=Disp_Decode(4); f=Disp_Decode(5); g=Disp_Decode(6); sa=dcount(0); sb=dcount(1); scDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp

65、_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_DecodeDisp_Decode=0000000; -全灭 end case; end process; end behave;4、编写完 VHDL 程序后,保存起来。方法同实验一。5、对自己编写的 VHDL 程序进行编译并仿真,对程序的错误进行修改。6、 编译仿真无误后, 依照 4X4 矩阵键、 数码管与 FPGA 的管脚连接表(表或参照附录)进行管脚分配。 表 7-2

66、是示例程序的管脚分配表。 分配完成后,再进行全编译一次,以使管脚分配生效。表 7-2 端口管脚分配表端口名使用模块信号对应 FPGA 管脚说明CLK数字信号源C13时钟为 1KHZKR04*4 钜阵键盘 R0B8KR14*4 钜阵键盘 R1A9KR24*4 钜阵键盘 R2B9KR34*4 钜阵键盘 R3E5钜阵键盘行信号KC04*4 钜阵键盘 C0B6KC14*4 钜阵键盘 C1A7KC24*4 钜阵键盘 C2B7KC34*4 钜阵键盘 C3A8钜阵键盘列信号- 51 -A数码管模块 A 段F13B数码管模块 B 段F14C数码管模块 C 段F15D数码管模块 D 段E15E数码管模块 E 段F16F数码管模块 F 段F17G数码管模块 G 段E18SA数码管模块 SEL0F18SB数码管模块 SEL1G18SC数码管模块 SEL2G17键值显示7、用下载电缆通过 JTAG口将对应的 sof 文件加载到 FPGA 中。观察实验 结果是否与自己的编程思想一致。五、实验结果与现象五、实验结果与现象以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块 的时钟选择为 1KHZ,按

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!