北邮数电实验报告

合集下载

北邮数字电路综合实验报告

北邮数字电路综合实验报告

数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。

基本要求:1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。

通过密码设置确定键(BTN 键)进行锁定。

2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。

输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。

3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。

闭锁状态下不能清除密码。

4、用点阵显示开锁和闭锁状态。

提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。

2、密码锁的密码位数(4~6 位)可调。

3、自拟其它功能。

二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。

以下进行详细介绍。

1.键盘模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。

键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。

北邮数字电路综合实验报告

北邮数字电路综合实验报告

数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。

基本要求:1、密码设置:通过键盘进行 4 位数字密码设定输入,在数码管上显示所输入数字。

通过密码设置确定键(BTN 键)进行锁定。

2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。

输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。

3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。

闭锁状态下不能清除密码。

4、用点阵显示开锁和闭锁状态。

提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。

2、密码锁的密码位数(4~6 位)可调。

3、自拟其它功能。

二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。

以下进行详细介绍。

1.键盘模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。

键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。

北京邮电大学数电实验报告

北京邮电大学数电实验报告

北京邮电大学数字电路与逻辑设计实验发光二极管走马灯的电路设计与实现实验报告学院:信息与通信工程学院班级:27姓名:付莹学号:班内序号:23【实验目的】(1)进一步了解时序电路描述方法;(2)熟悉状态机的设计方法。

【实验所用仪器及元器件】(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。

【实验任务要求】设计并实现一个控制8个发光二极管亮灭的电路,仿真验证其功能,并下载到实验板测试。

(1)单点移动模式:一个点在8个发光二极管上来回的亮(2)幕布式:从中间两个点,同时向两边依次点亮直到全亮,然后再向中间点灭,依次往复。

【实验设计思路及过程】(1)设计思路实验要求有两个,一个是单点移动模式,一个是幕布式。

通过CASE-WHEN 语句实现走马灯的变化。

分别定义一个8个变量的数据类型和一个13变量的数据类型,表示一个周期内的灯的变化,并设计一个变量在两种状态间进行切换。

此时,需要把所有状态罗列到case-when中去。

(2)VHDL代码LIBRARY IEEE;USE ABC ISPORT(A,CLK,RESET:IN STD_LOGIC;DENG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ABC;ARCHITECTURE A OF ABC ISTYPE STATE_TEMP is(s0,s1,s2,s3,s4,s5,s6,s7);TYPE STATE_TEMP1 is(s0,s1,s2,s3,s4,s5,s6,s7,s00,s01,s02,s03,s04,s05);signal STATE:STATE_TEMP;signal STATE1:STATE_TEMP1;BEGINPROCESS(CLK,RESET)BEGINIF RESET='1' THENDENG<="00000000";ELSIF(CLK'EVENT AND CLK='0')THENIF A='0'THEN --KAIMUSHICASE STATE1 ISWHEN s0 => STATE1<=s1;DENG<="";WHEN s1 => STATE1<=s2;DENG<="01000000";WHEN s2 => STATE1<=s3;DENG<="00100000";WHEN s3 => STATE1<=s4;DENG<="00010000";WHEN s4 => STATE1<=s5;DENG<="00001000";WHEN s5 => STATE1<=s6;DENG<="00000100";WHEN s6 => STATE1<=s7;DENG<="00000010";WHEN s7 =>STATE1<=s00;DENG<="00000001";WHEN s00=>STATE1<=s01;DENG<="00000010";WHEN s01=>STATE1<=s02;DENG<="00000100";WHEN s02=>STATE1<=s03;DENG<="00001000";WHEN s03=>STATE1<=s04;DENG<="00010000";WHEN s04=>STATE1<=s05;DENG<="00100000";WHEN s05=>STATE1<=s0;DENG <="01000000";END CASE;ELSECASE STATE ISWHEN s0 => STATE<=s1;DENG<="00011000";WHEN s1 => STATE<=s2;DENG<="00111100";WHEN s2 => STATE<=s3;DENG<="01111110";WHEN s3 => STATE<=s4;DENG<="";WHEN s4 => STATE<=s5;DENG<="01111110";WHEN s5 => STATE<=s6;DENG<="00111100";WHEN s6 => STATE<=s7;DENG<="00011000";WHEN s7 => STATE<=s0;DENG<="00000000";END CASE;END IF;END IF;END PROCESS;END A;【仿真波形及分析】1.仿真波形(1)单点移动式(2)幕布式(3)复位信号2.波形分析(1)单点移动式由图可以看出,当A为0时程序实现单点移动功能,如图所示DENG[7]开始亮,之后依次为DENG[6], DENG[5], DENG[4], DENG[3], DENG[2],DENG[1], DENG[0],然后DENG[1]也开始亮,依此类推,实现了功能要求(2)幕布式由图可以看出,当A为1时,如图所示,先是中间的两个灯DENG[4], DENG[5]亮,然后扩展到四个灯亮DENG[3]至DENG[6]亮,接下来是DENG[2]~DENG[7]亮,最后全亮,接着DENG[2]~DENG[7]亮,继而循环下去。

北邮数电实验报告

北邮数电实验报告

北邮数电实验报告北邮数电实验报告一、引言数电实验是电子信息类专业学生必修的一门实验课程,通过实践操作,帮助学生巩固理论知识,培养实际动手能力。

本次实验旨在通过设计和搭建一个简单的数字电路,来理解数字电路的基本原理和工作方式。

二、实验目的本次实验的目的是设计一个4位二进制加法器,实现两个4位二进制数的相加运算。

通过实验,我们可以加深对于数字电路的理解,掌握数字电路的设计和搭建方法。

三、实验原理1. 二进制加法器二进制加法器是一种用于计算二进制数相加的数字电路。

它由若干个逻辑门和触发器组成,可以实现二进制数的加法运算。

在本次实验中,我们将设计一个4位二进制加法器,即可以计算两个4位二进制数的相加结果。

2. 逻辑门逻辑门是数字电路中常用的基本元件,用于实现逻辑运算。

常见的逻辑门有与门、或门、非门、异或门等。

在本次实验中,我们将使用与门和异或门来构建4位二进制加法器。

四、实验步骤1. 设计4位二进制加法器的电路图根据实验要求,我们需要设计一个能够计算两个4位二进制数相加的电路。

首先,我们可以将两个4位二进制数分别用D0~D3和E0~E3表示,其中D0和E0分别为最低位。

然后,我们需要使用与门和异或门来实现加法器的功能。

通过逻辑运算,我们可以得到每一位的和以及进位。

最后,将每一位的和连接起来,即可得到最终的结果。

2. 搭建电路根据电路图,我们可以开始搭建实验电路。

首先,将所需的逻辑门和触发器连接起来,形成一个完整的电路。

然后,将所需的输入信号和电源连接到电路上。

最后,使用示波器等工具检查电路的工作状态,确保电路正常运行。

3. 进行实验测试在搭建好电路后,我们可以进行实验测试。

首先,将两个4位二进制数的输入信号连接到电路上。

然后,通过观察输出信号,判断电路是否正确计算了两个二进制数的相加结果。

如果输出信号与预期结果一致,说明电路设计和搭建成功。

五、实验结果与分析在进行实验测试后,我们可以得到实验结果。

通过观察输出信号,我们可以判断电路是否正确计算了两个二进制数的相加结果。

北邮数电实验报告4人表决器北邮电子-数电综合实验报告

北邮数电实验报告4人表决器北邮电子-数电综合实验报告

北邮数电实验报告4人表决器_北邮电子-数电综合实验报告数字电路综合实验设计简易出租车计价器的设计与实现学院:电子工程学院班级:2011211203学号:2011210876姓名:孙月鹏班内序号:04摘要本文介绍了利用QuartusII综合性PLD/FPGA开发软件,在MAXII数字逻辑实验开发板上实现简易出租车计价器功能的设计与实现方法。

本方案采用自上而下的设计理念,将整体电路按照功能划分为分频、计数、控制、数码管显示电路、点阵显示电路等若干模块,模块内用VHDL语言完成逻辑设计,模块间用原理图进行连接,使整体可实现计费、计时等功能。

关键字:可编程器件模块化设计出租车计价器VHDL语言一、设计任务要求基本要求:1.行驶公里:用时钟2秒钟表示出租车匀速行驶1公里。

在行车5公里以内,按起步价13元收费,超过5公里部分,以每公里2元收费。

燃油附加费每运次1元。

2.途中等待:用按键控制中途等待,等待少于(包括)5秒不收费,超过5秒后没等待3秒钟加收1元。

3.用数码管分时显示计费金额、行驶里程和等候时间。

字母A表示当前处于显示计费金额状态,字母B表示当前处于显示行驶里程状态,字母C表示当前处于显示等候时间状态。

4.用按键控制出租车空驶、载客状态。

提高要求:1.用点阵滚动显示收费单据。

2.具有夜间模式,基本单价加收20%的费用。

出租车收费以元为单位,元以下四舍五入。

3.出租车行驶速度可调可控。

4.多人乘车,分段计价。

5.自拟其他功能。

二、设计思路与结构框图1.设计思路图1结构框图由结构框图可以分析得出,该系统的的主体是计数控制器。

该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。

该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。

因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。

北邮数电综合实验报告

北邮数电综合实验报告

北邮数电综合实验报告综合实验报告:基于北邮数电实验的电子门禁系统设计与实现摘要:本次实验通过使用北邮数电实验室提供的器件和设备,设计并实现了一个简易的电子门禁系统。

该系统能够通过输入正确的密码或使用合法的身份卡,实现对门禁的控制和管理。

本文将详细介绍系统设计的原理、实验过程和结果,并对实验进行了总结和评价。

一、引言电子门禁系统是当前社会中广泛应用的一种重要安全保障设施。

它通过使用密码、身份卡等识别方式,对人员出入进行控制和管理。

本实验旨在通过北邮数电实验的学习和实践,学习和掌握电子门禁系统的设计与实现。

二、实验器材与原理实验器材:1.键盘2.蜂鸣器3.LCD显示屏4.数码安全码锁5.单片机开发板6.电源模块7.连线模块实验原理:该电子门禁系统的基本原理如下:1.用户通过键盘输入密码或刷合法的身份卡;2.单片机接收到输入的密码或读取身份卡信息;3.单片机对输入的密码或身份卡信息进行核对;5. 若核对失败,则控制蜂鸣器发出门禁错误提示音,并在LCD显示屏上显示“Access Denied”等拒绝信息。

三、实验过程与结果1.按照实验器材的接线要求,将键盘、蜂鸣器和LCD显示屏与开发板连接好;2.根据实验原理,编写相应的控制程序,并将程序烧录到单片机中;3.打开电源模块,开启电子门禁系统;4.用户通过键盘输入密码或刷合法的身份卡;5.系统接收到用户输入并进行核对;7. 核对失败时,蜂鸣器发出门禁错误提示音,LCD显示屏上显示“Access Denied”等拒绝信息。

实验结果显示,该电子门禁系统能够根据用户输入的密码或身份卡信息,进行核对并作出相应的操作。

当核对成功时,系统会解锁门禁并显示欢迎信息;当核对失败时,系统会发出错误提示并拒绝门禁。

四、实验总结本次实验通过设计和实现基于北邮数电实验的电子门禁系统,使得我们更加深入地了解了电子门禁系统的原理和应用。

通过实验,我们学会了利用键盘、蜂鸣器和LCD显示屏等器材,通过单片机控制,实现了一个简易的电子门禁系统。

北邮数电实验报告

北邮数电实验报告

北邮数电实验报告1. 实验目的本实验的目的是通过实际操作和实验验证,加深对数字电路的理解和掌握。

具体实验内容包括: 1. 实现各种基本逻辑电路(与门、或门、非门、异或门等)的电路设计。

2. 学习使用开关和LED灯进行数字信号输入和输出。

3. 掌握数字电路实验中常用的仪器设备的使用方法。

2. 实验器材和环境本实验所使用的器材和环境如下: - FPGA实验箱 - 数字逻辑集成电路(与门、或门、非门、异或门等) - 电源 - 接线板 - 数字电路实验仪器3. 实验步骤3.1 实验准备首先,我们需要将实验所需的器材连接好,包括将数字逻辑集成电路插入到FPGA实验箱上的插槽中,并将电源正确连接。

3.2 电路设计与布线根据实验要求,我们需要设计不同的基本逻辑电路。

比如,要设计一个与门电路,可以通过将两个输入端分别与两个开关连接,将输出端连接到一个LED灯上。

其他的逻辑电路同样可以设计类似的方式。

在设计和布线的过程中,需要注意保持电路的连通性,并避免出现短路等问题。

3.3 输入和输出信号设置根据实验要求,我们需要设置输入和输出信号。

可以通过控制开关的开合状态来设置输入信号,然后观察LED灯的亮灭情况来判断输出信号的状态是否符合预期。

3.4 实验数据记录和分析在实验过程中,我们需要记录每个逻辑电路的输入和输出信号状态,并进行分析。

可以通过绘制真值表或者逻辑门表来记录并分析数据。

4. 实验结果与分析根据实验步骤中记录的数据,我们可以得出实验结果,并进行进一步的分析。

比如,可以通过比对设计的逻辑电路输出和预期输出的差异,来判断实验是否成功完成。

5. 总结与反思通过本次实验,我深入了解和掌握了数字电路的基本原理和实验方法。

通过设计和实验验证,加深了对基本逻辑电路的理解,并熟悉了数字电路实验所使用的仪器设备。

在实验过程中,我遇到了一些问题,比如电路连接错误导致的信号不稳定等,但通过仔细调试和排查,最终解决了这些问题。

北邮数电实验报告(猜数字)

北邮数电实验报告(猜数字)

题目: 简易猜数字游戏机的设计与实现姓名学院专业班级学号班内序号一、设计课题的任务要求基本要求:1、游戏规则:通常由两个人玩,一方出数字,另一方猜。

出数字的人要想好一个没有重复数字的 4 位数,不能让猜的人知道。

2、数字设置:通过 4*4 键盘进行 4 位数字输入,在数码管(DISP0~DISP3)上显示当前所输入的数字。

通过设置确定键(BTN1 键)进行锁定,此时数码管上的数值消失,同时用点阵开始倒计时,即:初始状态点阵全亮,然后从右下角开始,由右到左、由下到上逐点逐排依次熄灭,间隔时间为 1s,共计 64s。

3、猜数字:可以通过 4*4 键盘进行 4 位数字输入进行猜数字,且每输入一位数字在数码管(DISP0~DISP3)上显示当前所输入的数字,按确定键(BTN2 键)进行确认,此时要根据输入的这组数字给出几 A 几 B,其中:A前面的数字表示位置正确的数的个数,用DISP5显示B前的数字表示数字正确而位置不对的数的个数,用DISP4显示如正确答案为 2134,而猜的人猜 5314,则是1A2B,其中有一个4的位置对了,记为1A,而1和3这三个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B 接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。

4、若数字正确则显示猜数字成功,点阵显示“☺”笑脸;若输入数字错误系统仍然处于猜数字状态,点阵显示“X”,并用蜂鸣器或 led 闪烁报警。

5、若到点阵全灭时(64s 结束)仍未猜出正确数字,游戏失败,点阵显示“囧”。

6、设置游戏机开关。

提高要求:1、若数字正确则显示猜数字成功,用蜂鸣器播放一段乐曲。

2、随机产生数字,并不在数码管上显示,进行猜数字游戏,用点阵进行 128s 计时,即点阵轮询熄灭两次,其他要求同基本功能3、4 和 5。

3、自拟其他功能。

二、系统设计设计思路:首先是状态机的设定,设定了5个状态,分别是idle、s1、s2、s3和over。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京邮电大学实验报告实验名称:数字电路与逻辑设计实验报告学院:信息与通信工程学院班级:姓名:学号:序号:日期:实验三:用VHDL语言设计与实现逻辑电路一、实验内容1. 用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验版测试。

要求用按键设定输入信号,发光二极管显示输出信号;2.用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,仿真验证其功能;3.将(1),(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。

二、模块端口说明及连接图1.分频器2. 计数器clk: 时钟输入信号 clk: 时钟信号输入clear: 复位信号输入 clear: 复位信号输入clk_out: 时钟分频后的信号输出 q: 计数器的输出3.数码管显示b: 数码管的输入信号seg: 译码显示输出onoff: 数码管的输出控制4.连接图三、实验分析1.设计思路本实验将之前的分频器和计数器以及数码管显示模块组合起来,实现了单个数码管现显示0~9,每隔0.5s切换一次显示内容。

COMPONENT div_12实现了时钟分频,将50MHz的单片机晶振时钟进行分频,输出频率2HZ占空比50%的方波时钟,以此时钟作为内部时钟驱动计数器。

COMPONENT jishuqi是一个十进制计数器,NUM从“0000”到“1001”循环变化,模为10。

计数器的输出传递给数码管译码显示电路。

COMPONENT seg7_1是数码管译码显示电路,将收到的信号NUM译码并控制数码管的段锁存来控制数码管的显示。

整体来看,div-12提供了分频后2Hz的时钟,驱动计数器计数,计数的结果作为数码管译码显示模块的输入,根据计数器实时的数进行数码管的显示。

综合起来就实现了设计的功能。

在进行电路的连接时,可直接在代码中分成三个进程来实现,也可通过为每个模块建立符号,连接电路图来实现。

2. 具体代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpinjishu ISPORT(clear2 :IN STD_LOGIC;clk1:IN STD_LOGIC;b1:OUT STD_LOGIC_VECTOR(6 downto 0);CAT:OUT STD_LOGIC_VECTOR(7 downto 0));end fenpinjishu;ARCHITECTURE a OF fenpinjishu ISCOMPONENT div_12PORT(clk :IN STD_LOGIC;clk_out:OUT STD_LOGIC);END COMPONENT;COMPONENT jishuqiPORT(clk,reset:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT seg7_1PORT(a:IN STD_LOGIC_VECTOR(3 downto 0);b:OUT STD_LOGIC_VECTOR(6 downto 0));END COMPONENT;SIGNAL na:STD_LOGIC;SIGNAL nb:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINu1:div_12 PORT MAP(clk_out=>na,clk=>clk1);u2:jishuqi PORT MAP(reset=clear2,clk=>na,q=>nb); u3:seg7_1 PORT MAP(a=>nb,b=>b1);CAT<="11111101";END a;3.波形图如下:4.波形分析:由波形图我们可以看出,输入的时钟信号经过分频器后产生了周期为输入信号12倍的时钟信号,实现了分频器的12倍分频功能,同时clear实现的是清零功能,为高电平有效,当输入clear信号时,分频器的输出重新进行周期分频,clear信号之后经过六个周期信号进行一次反转;接着进行上升沿有效的从0~9的8421十进制计数器,每个计数数字都对应一个七位输出来控制数码管。

四、分块实验分析1、数码管译码器:VHDL代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY seg7_1 ISPORT(a:IN STD_LOGIC_VECTOR(3 downto 0);b:OUT STD_LOGIC_VECTOR(6 downto 0);cat:out std_logic_vector(5 downto 0));end seg7_1;ARCHITECTURE seg7_1_arch OF seg7_1 ISBEGINPROCESS(a)BEGINCASE a ISWHEN"0000" => b <="1111110";--0WHEN"0001" => b <="0110000";--1WHEN"0010" => b <="1101101";--2WHEN"0011" => b <="1111001";--3WHEN"0100" => b <="0110011";--4WHEN"0101" => b <="1011011";--5WHEN"0110" => b <="1011111";--6WHEN"0111" => b <="1110000";--7WHEN"1000" => b <="1111111";--8WHEN"1001" => b <="1111011";--9WHEN OTHERS =>b <="0000000";END CASE;END PROCESS;cat<="111101";END;2、8421十进制计数器:VHDL代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jishuqi ISPORT(clk,reset:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END jishuqi;ARCHITECTURE a OF jishuqi ISSIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,reset)BEGINIF reset='0' THENq_temp<="0000";ELSIF clk'EVENT AND clk='1' THENIF q_temp="1001" THENq_temp<="0000";ELSE q_temp<=q_temp+1;END IF;END IF;END PROCESS;q<= q_temp;END a;仿真波形图:分析:因为计数器采用的是异步复位,所以复位信号的优先级更高。

当复位信号为0时,输出变为0000当复位信号为1时,每当遇到时钟上升沿,输出加1,实现计数的功能,计算循环为0000到1010(二进制表示)。

3、分频器:VHDL 代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY div_12 ISPORT(clk :IN STD_LOGIC;clk_out:OUT STD_LOGIC);END div_12;ARCHITECTURE a OF div_12 ISSIGNAL tmp:INTEGER RANGE 0 TO 5;SIGNAL clktmp:STD_LOGIC;BEGINPROCESS(clear,clk)BEGINIF clk'event AND clk='1' THENIF tmp = 5 THENtmp<=0;clktmp<=NOT clktmp;ELSEtmp <=tmp+1;END IF;END IF;END PROCESS;clk_out<=clktmp;END a;仿真波形:分析:当clear=0时,将会重新计算6个时钟周期,因此输出波形中相邻两个输出为1的位置中间有12个代表半个周期的方格。

五、故障及问题分析1.程序运行时经常出现的是编译出错,可能有以下几种情况:(1)做实验时,由于不是很清楚VHDL语言和Quartus的命名规则,命名时VHDL 文件名与实体名不一致,导致文件运行不成功;或者文件夹中出现了中文名,运行也可能出错。

尽量用英文来命名,不知道的英文拼写用拼音,不能出现中文。

(2)在文件编译前一定记得要保存,仿真前也要保存。

(3)每次重启之前完成的工程,进行其他操作前一定要先编译,不然可能后续操作会出现莫名其妙的bug。

2.仿真出错,可能的原因有:(1)时间尺度设置不合适:在设置时间时,我们一般采用的微秒级的周期,若输入周期太短,经过电路的延迟后,输出波形可能与预计波形不同;(2)仿真文件名:保存的仿真文件名一定要与工程名一致,仿真才能成功;仿真时需注意:在实验三中进行信号的输入时,使用数组来实现比较简单;一般我们进行结果的验证时习惯用二进制结果来检查,这时我们需要在properties中将类型改为二进制;在输出信号的显示中出现毛刺是正常现象,这应属于电路的冒险。

3.下载编译出错,可能的原因有:(1)管脚输入有误,应检验相应的管脚连接是否正确;(2)管脚设置完成后一定要进行编译,否则管脚设置不起作用。

六、实验总结本学期接触了数字电路与逻辑设计这门课后,发现它是一门很有意思的课程,电路的设计很巧妙,最终的逻辑图也是通俗易懂,个人感觉没有模电的电路那么复杂,同时电路实现的功能也很强大,更贴近我们的生活,在VDHL语言的学习中,我有以下几点感触:VHDL语言的逻辑语法类似于C++语言,也和QSL语言有某些相似之处,它跟之前做FPGA实验时我们掌握的Verilog语言也很相似,因此有了编程的基础,学起VHDL语言会更得心应手。

相关文档
最新文档