数字逻辑实验指导书.doc_第1页
数字逻辑实验指导书.doc_第2页
数字逻辑实验指导书.doc_第3页
数字逻辑实验指导书.doc_第4页
数字逻辑实验指导书.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.数字逻辑实验指导书目 录前 言1实验一 通过3-8译码器实例学习Quartus Prime3实验二 4选1多路选择器设计19实验三 异步清零和同步使能加法计数器设计21实验四 八位七段数码管显示电路的设计23实验五 整数分频器的设计26实验六 加减法运算器设计29实验七 状态机设计32实验八 设计七人表决器38实验九 设计四人抢答器40实验十 可控脉冲发生器的设计43.实验一 通过3-8译码器实例学习Quartus一、 实验目的1、 通过简单的3-8译码器的设计,掌握组合逻辑电路的设计方法。2、 初步掌握Quartus软件使用方法和设计流程。3、 掌握组合逻辑电路的静态测试方法。4、 掌握远程云端硬件实验平台的使用。二、 实验原理3-8译码器顾名思义三输入,八输出。当输入信号按二进制方式的表示值为N时,标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,即二进制07,所以输出端在每种组合中仅有一位为高电平。其真值表下表所示输入输出a2a1a0y7y6y5y4y3y2y1y00000000000100100000010010000001000110000100010000010000101001000001100100000011110000000译码器不需要像编码器那样用一个输出端指示输出是否有效。但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。本例设计中没有考虑使能输入端,读者自己设计时可以考虑加入使能输入端时,程序如何设计。三、 实验内容 本实验通过VHDL实现一个38译码器功能模块,通过改变输入a2.0的值,从而改变输出y0y7的数值。实验中信号与管脚连接见下表信号名称FPGA I/O名称功能说明a0Pin_P93位输入a1Pin_R9a2Pin_T9y0Pin_A38位输出y1Pin_B4 y2Pin_A4 y3Pin_B5 y4Pin_A5 y5Pin_C6 y6Pin_B6 y7Pin_A6四、 实验步骤下面将通过这个实验,向读者介绍在Quartus软件下项目文件的生成、编译、管脚分配以及时序仿真等的操作过程。(本实验指导书使用Quartus Prime 17.1 Lite 版本)1 建立工程1)选择开始菜单下或者桌面上的Quartus图标, 运行Quartus软件,进入下图所示界面。选择软件中的菜单FileNew或者界面中的New 图标,选择新建New Quartus Prime Project,进入新建工程对话框。3) 点击NEXT进入工程设定对话框如下图所示。第一个输入框为工程工作文件夹地址输入框,设定好后所有工程相关文件将统一存放在该文件夹下;第二个输入框为工程名输入框;第三个输入框为该工程的顶层文件名输入框。本例中工程文件夹名、工程名、顶层文件名都为decoder38。4) 点击NEXT,进入工程类型对话框,选择Empty project。5) 点击NEXT,进入工程文件对话框。在该界面下我们可以添加工程所需的文件,这里由于是新建工程故不添加任何文件。6) 点击NEXT,进入器件选择对话框,这里我们选择FamilyCyclone E;PackegeFBGA;Pin count256然后选择下方芯片EP4CE10F17C8即FPGA平台主芯片。7) 点击NEXT进入EDA工具设置对话框,如下图所示,在这里我们将仿真工具设置为ModelSim-Altera,即选择SimulationModelSim-AlteraVHDL。8) 点击NEXT进入工程信息汇总对话框。该对话框汇总了本工程中所有的设置信息,确认无误后点击NEXT进入工程编辑界面。2、 Quartus Prime开发环境简介建立工程后就可以进入Quartus Prime集成开发环境(如下图所示)从图中可以看出Quartus Prime集成开发环境大致可以分为4个窗口,最左上角为工程管理窗口,包括原代码文件、约束文件和仿真测试文件的管理;左中窗口为工程流程向导,涵盖FPGA开发过程中分析、综合、管脚分配、布局布线及静态时序分析的整个流程;右边主窗口为各种文件和报表的打开窗口;最下方窗口为工程信息框,显示综合过程信息等内容。有了以上基本认识,下面我们就来实现本实验指导书的第一个实验3-8译码器。3、工程实现1)如下图所示,点击菜单 FileNew,在新建菜单下选择VHDL File。 2)在新建的文件内输入相应的设计代码,代码如下:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;ENTITY decoder38 IS PORT (a : IN std_logic_vector(2 DOWNTO 0); y : OUT std_logic_vector(7 DOWNTO 0);END decoder38;ARCHITECTURE rtl OF decoder38 ISBEGIN PROCESS (a) BEGIN CASE a IS WHEN 000 = y y y y y y y y y Pin Planner。此时应看到如下界面在界面下方的窗口中的输入输出信号后,输入对应的 FPGA 管脚标号(或将信号拖拽到上方的 Package 图中对应的管脚上),并指定 I/O输入输出标准。(远程云端硬件实验平台I/O电压电流均为3.3V 2mA)。管脚设置完成后如图,关闭Pin Planner即完成管脚分配6) 管脚约束完成后,就可以指定下载所需文件的类型。远程云端硬件实验平台下载需要.rbf类型的下载文件,该文件的生成需要在工程中设定后才可由Quartus Prime软件自动产生。具体方法如下,首先点击菜单栏中的AssignmentsDevice,选择Device and Pin Options。然后选择Programming Files,在右侧对话框中勾选Raw Binary File(.rbf),点击OK确认。此时工程全编译后Quartus软件即会自动生成远程云端实验平台所需的.rbf下载文件。7) 点击菜单栏中的ProcessingStart Compilation或者图标栏中的完成整个工程的编译。8) 如果将文件下载到本地开发板,则点击菜单栏中ToolsProgrammer或者图标栏的Programmer,进入硬件编程管理界面。将Altera USB Blaster的USB端连接电脑,JTAG端连接开发板JTAG口,打开开发板电源。将Hardware Setup选择成USB-Blaster,Mode选择成JTAG,同时选择工程文件夹下的.sof文件作为写入文件。点击 Start,将.sof文件下载到开发板上的 FPGA 中,本工程完成。五、实验报告1、进一步熟悉和理解Quartus Prime软件的使用方法和工程实现的流程。2、仿照3-8译码器实现数字电路中最基本的与门、或门、非门及比较器、多路选择器等基本逻辑电路的VHDL代码。实验二 4选1多路选择器设计一、 实验目的1、 了解多路选择器设计的原理。2、 进一步熟悉Quartus Prime软件的使用方法和VHDL输入的全过程。3、 进一步掌握实验系统的使用。二、 实验原理多路选择器是数字系统设计中经常使用的模块,其特点是在选择信号控制下,输出端与确定的数据通道联通,并随数据通道的信号变化而变化。在本实验中,我们将实现一个4选1多路选择器,因此将有一个2位的选择信号,4个数据输入信号和1个数据输出信号。三、 实验内容本实验要求通过VHDL实现一个4选1多路选择器。通过选择信号sel1.0实现数据输出通路dataout在不同的数据输入通路datain0datain3之间切换,并观察输出信号随输入信号的变化而变化。实验中信号与管脚连接如下表信号名称FPGA I/O名称功能说明sel0Pin_P9通路选择信号sel1Pin_R9datain0Pin_T9数据输入通路datain1Pin_N8datain2Pin_P8datain3Pin_R8dataoutPin_A3数据输出通路四、 实验步骤1、 打开Quartus Prime软件,新建一个工程。2、 建完工程之后,再新建一个VHDL空白源文件。3、 按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,读者可参照光盘中提供的示例程序。4、 编写完VHDL程序后,保存。5、 对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。6、 编译仿真无误后,依照拨动开关、LED与FPGA的管脚连接表进行管脚分配,然后进行综合和实现。7、 用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的编程思想一致。五、 实验报告1、 绘出仿真波形,并作说明。2、 进一步熟悉Quartus Prime软件3、 尝试编写VHDL程序,实现多路分配器功能。4、 将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。实验三 异步清零和同步使能加法计数器设计一、 实验目的1、 了解二进制计数器的工作原理。2、 进一步熟悉Quartus Prime软件的使用方法和VHDL输入。3、 理解时钟在时序逻辑电路中的作用。二、 实验原理二进制计数器是应用最多、功能最全的计数器之一,含异步清零和同步使能的加法计数器的具体工作过程如下:在时钟上升沿的情况下,检测使能端是否允许计数,如果允许计数(定义使能端高电平有效)则开始计数,否则一直检测使能端信号。在计数过程中检测异步复位信号是否有效(低电平有效),当复位信号起作用时,计数值立即清零,继续进行检测和计数。其工作时序如图所示:三、 实验内容本实验要求完成的任务是在时钟信号的作用下,通过使能信号和异步复位信号来完成加法计数器的计数。当使能信号有效时,计数器从0开始计数,最大计数到9后返回到0重新开始计数;当异步复位信号有效时,计数器立即清零,直到复位信号撤除后计数器开始正常工作。实验中信号与管脚连接如下表信号名称FPGA I/O名称功能说明clkPin_E1系统时钟rst_nPin_C2异步复位enPin_P9同步使能cnt0Pin_A3计数器输出cnt1Pin_B4cnt2Pin_A4cnt3Pin_B5四、 实验报告1、 绘出仿真波形,并作说明。2、 将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。3、 说明异步复位和同步复位的区别以及各自的优缺点。实验四 八位七段数码管显示电路的设计一、 实验目的1、 了解数码管的工作原理。2、 学习七段数码管显示译码器的设计。3、 学习数码管扫描显示的原理。二、 实验原理七段数码管是电子开发过程中常用的输出显示设备。本实验中中使用的是一个八位一体、共阴极型七段数码管。其单个静态数码管如下图所示。由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。八位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,当位选信号为低电平时该位数码管被选中。同一时刻只有一位数码管被选中并点亮,下一时刻则切换到相邻位数码管,但因为切换速度很快,在视觉暂留效应的帮助下,我们看到的就是8位数码管被整体点亮。三、 实验内容本实验要求完成的任务是在时钟信号的作用下,将输入的二进制数值在八位数码管上显示。实验中选择1KHZ作为扫描时钟,输入一个4位二进制数值,译码为对应的段码后,在位选扫描信号的帮助下,在八位数码管上显示其十六进制的值。实验中信号与FPGA的管脚连接见下表。信号名称FPGA I/O名称功能说明clkPin_E1系统时钟rst_nPin_C2系统复位seg_aPin_A3段选信号seg_bPin_B4seg_cPin_A4seg_dPin_B5seg_ePin_A5seg_fPin_C6seg_gPin_B6seg_dpPin_A6del0Pin_B7位选信号del1Pin_A7del2Pin_C8del3Pin_B8del4Pin_A8del5Pin_C9del6Pin_B9del7Pin_A9data0Pin_P9四位二进制数值data1Pin_R9data2Pin_T9data3Pin_N8四、 实验报告1、 绘出仿真波形,并作说明。2、 阐明扫描时钟是如何工作的,改变扫描时钟会有什么变化。3、 实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。4、 设计实验让八位数码管不同位显示不同的数字实验五 整数分频器的设计一、 实验目的1、 学习整数分频器中偶数分频和奇数分频的电路的设计和实现方法。2、 了解和掌握分频电路实现的方法。3、 将实现的模块打包作为后续实验的IP核使用二、 实验原理整数分频器是数字电路中最常用的电路模块,其作用是对时钟信号进行降频使用。整数分频中又分为偶数分频和奇数分频,顾名思义分频常数为偶数和奇数(分频常数=系统输入频率/系统输出频率)。其中偶分频相对简单,奇数分频相对复杂,实现的原理都是利用计数器对输入时钟进行计数,当计到指定数值时将输出时钟信号取反,同时将计数器清零从新开始计数,从而实现系统时钟的降频使用。三、 实验内容本实验要求完成的任务是对时钟信号完成偶数分频和奇数分频,并通过设置不同的分频参数,输出不同频率的时钟信号,同时仿真查看实验效果。然后将分频后的时钟分配到观察测试引脚用示波器观察输出结果。实验中信号与fpga连接如下:信号名称FPGA I/O名称功能说明clkPin_E1系统时钟rst_nPin_C2系统复位clkoutPin_A3分频时钟四、 实验设计思想偶分频:以4分频为例,当分频常数N=4时,参数FULL=1,即分频计数器从0开始每计到1时,分频输出时钟翻转一次,其时序如下图,从而达到了4分频的效果奇分频:以5分频为例,当分频常数N=5时,参数FULL0=1、FULL1=2,时钟信号clk0以系统时钟上升沿为触发点,先计数到1翻转一次,在计数到2翻转一次,实现一个占空比非50%的5分频时钟;时钟信号clk1则以系统时钟下降沿为触发点,先计数到1翻转一次,在计数到2翻转一次,实现一个占空比非50%的5分频时钟。因clk0和clk1相位相差半个系统时钟,将两者相与可以得到占空比为50%的5分频时钟信号。再用一个块生成语句将两种情况结合,则可以得到一个任意整数分频模块。模块可以自动判断奇偶分频并生成相应电路。实验报告1、 输入不同的分频值绘出仿真波形和观察结果,并作说明。2、 将实验原理、设计过程、编译仿真波形和观察结果记录下来。实验六 加减法运算器设计一、 实验目的1 加深对二进制加减法的认识。2 了解用VHDL语言实现运算器器的过程。3 理解二进制转BCD码算法。二、 实验原理实验中为两个4位二进制数相加减,同时有一个加减法选择信号,当信号为1时,输出相加结果,否则输出相减结果。同时对结果的5位二进制数转换为相应BCD码以适应人们十进制计数的习惯。这里重点要理解二进制数转换BCD码的算法,即大四加三算法。其转换方法如下:1 首先将5位二进制数高位加上8位0,组成一个13位运算数;2 将运算数左移3位,同时低位补零。3 判断移位后的运算数的85位是否大于4,如果大于4则将该四位数加上3,否则不变。4 将处理后的运算数再左移1位,同时低位补零。5 再判断移位后的运算数的85位是否大于4,如果大于4则将该四位数加上3,否则不变。6 然后将处理后的运算数再左移1位,同时低位补零。此时运算数的高8位即是该数所对应的BCD码。以转换二进制数5b11101为例,其所对应的十进制数为d29,那么它所对应的BCD码为0010_1001。转换过程如下表:说明11101运算数扩展0000000011101左移三位0000011101000大四加三0000101001000左移一位0001010010000大四加三0001010010000左移一位0010100100000三、 实验内容本实验的任务是实现一个简单的4位运算器,包含加法和减法运算,通过选择信号选择是将两数值相加还是相减,同时输出结果的BCD码。实验中信号与fpga连接如下:信号名称FPGA I/O名称功能说明selPin_P9运算选择dataA0Pin_T9运算数AdataA1Pin_N8dataA2Pin_P8dataA3Pin_R8dataB0Pin_T8运算数BdataB1Pin_R7dataB2Pin_T7dataB3Pin_N6dataout0Pin_A3运算结果dataout1Pin_B4dataout2Pin_A4dataout3Pin_B5dataout4Pin_A5dataoutBCD0Pin_C6BCD码结果dataoutBCD1Pin_B6dataoutBCD2Pin_A6dataoutBCD3Pin_B7dataoutBCD4Pin_A7dataoutBCD5Pin_C8dataoutBCD6Pin_B8dataoutBCD7Pin_A8四、 实验报告1、 绘仿真波形,并作说明。2、 设计实验用数码管来显示运算器的结果。3、 设计实验实现BCD码转换为二进制数。4、 实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。实验七 状态机设计一、实验目的1 理解什么是状态机。2 熟练运用一段式、二段式、三段式实现状态机。二、实验原理本实验要实现的状态机的状态转移图如下所示:其中状态为S0到S3,根据输入信号in0到in3不同的值在各个状态之间切换,同时输出相应的数值。下面我们来看一下什么是状态机。状态机的本质就是对具有逻辑顺序或时序规律事件的一种描述方法。状态机有三个基本要素即:l 状态:也叫状态变量。在逻辑设计中,使用状态划分逻辑顺序和时序规律。如上图中的S0到S3即为状态转移图的4个状态。l 输出:输出指在某一个状态时特定发生的事件。如上图中的outdata,outdata的输出总是伴随着状态的变化而变化。l 输入:指状态机中进入每个状态的条件,有的状态机没有输入条件,其中的状态转移较为简单,有的状态机有输入条件,当某个输入条件存在时才能转移到相应的状态。上图中in0到in3即为状态机的输入,状态机根据输入的不同,跳转到不同的状态。根据状态机的输出是否与输入条件相关,又可将状态机分为两大类:摩尔( Moore)型和米勒( Mealy)型。摩尔状态机的输出仅仅依赖于当前状态,而与输入条件无关;米勒型状态机的输出不仅依赖于当前状态,而且取决于该状态的输入条件。他们的区别可以见下图:本实验的状态机的输出仅取决于当前状态,那么这显然是一个摩尔型状态机。用VHDL实现一个状态机,有三种描述方式,即一段式、二段式和三段式。l 一段式状态机:将整个状态机写到 1 个 always 模块里面,在该模块中即描述状态转移,又描述状态的输入和输出。其电路结构可以由下图表示:l 二段式状态机:一个 always 模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及当前状态输出。其电路结构可以由下图表示:l 三段式状态机:一个 always模块采用同步时序描述状态转移;第二个采用组合逻辑判断状态转移条件,描述状态转移规律;第三个 always 模块使用同步时序电路描述每个状态的输出。其电路结构可以由下图表示: 一般而言,推荐的 FSM 描述方法是后两种,即两段式和三段式 FSM 描述方法。其原因为: FSM 和其他设计一样,最好使用同步时序方式设计,以提高设计的稳定性,消除毛刺。状态机实现后,一般来说,状态转移部分是同步时序电路而状态的转移条件的判断是组合逻辑。两段式之所以比一段式编码合理,就在于两段式编码将同步时序和组合逻辑分别放到不同的 always 程序块中实现。这样做的好处不仅仅是便于阅读、理解、维护,更重要的是利于综合器优化代码,利于用户添加合适的时序约束条件,利于布局布线器实现设计。而一段式 FSM 描述不利于时序约束、功能更改、调试等,而且不能很好的表示米勒 FSM 的输出,容易写出 Latches,导致逻辑功能错误。 在一般两段式描述中,为了便于描述当前状态的输出,很多设计者习惯将当前状态的输出用组合逻辑实现。但是这种组合逻辑仍然有产生毛刺的可能性,而且不利于约束,不利于综合器和布局布线器实现高性能的设计。因此如果设计运行额外的一个时钟节拍的插入( latency),则要求尽量对状态机的输出用寄存器寄存一拍。但是很多实际情况不允许插入一个寄存节拍,此时则可以通过三段式描述方法进行解决。三段式与两段式相比,关键在于根据状态转移规律,在上一状态根据输入条件判断出当前状态的输出,从而在不插入额外时钟节拍的前提下,实现了寄存器输出。三、实验内容本实验的任务是实现一个简单的4状态状态机,根据输入信号in0in3的不同值在各个状态之间切换,同时输出相应的数值。要求分别由一段式、二段式和三段式状态机实现同一个状态转移图。实验中信号与fpga连接如下:信号名称FPGA I/O名称功能说明clkPin_E1系统时钟rst_nPin_C2系统复位in0Pin_P9输入信号in1Pin_R9in2Pin_T9in3Pin_N8outdata0Pin_A3状态输出outdata1Pin_B4outdata2Pin_A4outdata3Pin_B5四、实验报告1 绘仿真波形,并作说明。2 说明不同形式状态机的差异和优劣性。3 实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。实验八 设计七人表决器一、 实验目的1、 熟悉七人表决器的工作原理。2、 进一步了解实验系统的硬件结构。二、 实验原理所谓表决器就是对于一个决议,由多个人投票,如果同意的票数过半,就认为此决议可行;否则如果否决的票数过半,则认为此决议无效。七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4时,则认为同意;反之,当否决的票数大于或者等于4时,则认为不同意。实验中用7个输入来表示七个人,当对应输入为1时,表示此人同意,否则表示此人反对。若表决的结果为通过,则pass信号为1;否则,pass信号为0。同时,显示通过的票数。三、 实验内容本实验实现一个简单的七人表决器的功能。用7位输入代表7个人,结果显示通过与否,并显示同意的人数。 实验中信号与fpga连接如下:信号名称FPGA I/O名称功能说明vote0Pin_P97人投票信号vote1Pin_R9vote2Pin_T9vote3Pin_N8vote4Pin_P8vote5Pin_R8vote6Pin_T8passPin_A3通过信号sum0Pin_B4同意人数sum1Pin_A4sum2Pin_B5四、 实验报告1、绘出仿真波形,并作说明。2、将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。3、试在此实验的基础上增加一个表决的时间,只的在这一时间内的表决结果有效。4、用数码管显示通过的票数。实验九 设计四人抢答器一、 实验目的1、熟悉四人抢答器的工作原理。2、加深对VHDL语言的理解。3、掌握EDA开发的基本流程。二、 实验原理抢答器在各类竞赛性质的场合得到了广泛的应用,它的出现,消除了原来由于人眼的误差而未能正确判断最先抢答的人的情况。抢答器的原理比较简单,首先必须设置一个抢答允许标志位,目的就是为了允许或者禁止抢答者按按钮;如果抢答允许位有效,那么第一个抢答者按下的按钮就将其清除,同时记录按钮的序号,也就是对应的按按钮的人,这样做的目的是为了禁止后面再有人按下按钮的情况。总的说来,抢答器的实现就是在抢答允许位有效后,第一个按下按钮的人将其清除以禁止再有按钮按下,同时记录清楚抢答允许位的按钮的序号并显示出来,这就是抢答器的实现原理。三、 实验内容本实验的任务是设计一个四人抢答器,具体要求为:按下开始按键一次,允许一次抢答,这时4个抢答信号中第一个按下的按键将抢答允许信号清除,

温馨提示

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

评论

0/150

提交评论