北邮数电实验分析报告-信息
北邮数字电路综合实验报告

数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求: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]亮,继而循环下去。
北邮数电实验报告信息

数字电路与逻辑设计实验姓名***学院信息与通信工程学院专业信息工程班级***学号****班内序号***实验一一、实验名称和实验任务要求1.实验内容:QuartusII原理图输入法设计与实现。
2.实验目的:(1)熟悉用QuartusII原理图输入法进行电路设计和仿真。
(2)掌握QuartusII图形模块单元的生成与调用。
(3)熟悉实验板的使用。
3.实验任务要求:(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。
(2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用3线—8线译码器(74LS138)和逻辑门实现函数F=(/C)(/C)(/C)+(/C)C(/C)+C(/C)(/C)+CCC,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
二、原理图半加器模块和逻辑门设计实现的全加器:三、仿真波形图及分析电路实现了全加器的功能。
全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。
由其原理可得逻辑表达式:sum=ain⊕bin⊕cincout = (ain⊕bin)cin + ain*bin。
列出真值表:仿真波形对比真值表,可以看出波形图与理论值完全符合。
四、故障及问题分析1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。
解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。
2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟也没继续下载。
解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。
实验二一、实验名称和实验任务要求1.实验内容:用VHDL设计与实现组合逻辑电路。
2.实验目的:(1)熟悉用VHDL语言设计组合逻辑电路的方法。
北邮数电实验报告

北邮数电实验报告北邮数电实验报告一、引言数电实验是电子信息类专业学生必修的一门实验课程,通过实践操作,帮助学生巩固理论知识,培养实际动手能力。
本次实验旨在通过设计和搭建一个简单的数字电路,来理解数字电路的基本原理和工作方式。
二、实验目的本次实验的目的是设计一个4位二进制加法器,实现两个4位二进制数的相加运算。
通过实验,我们可以加深对于数字电路的理解,掌握数字电路的设计和搭建方法。
三、实验原理1. 二进制加法器二进制加法器是一种用于计算二进制数相加的数字电路。
它由若干个逻辑门和触发器组成,可以实现二进制数的加法运算。
在本次实验中,我们将设计一个4位二进制加法器,即可以计算两个4位二进制数的相加结果。
2. 逻辑门逻辑门是数字电路中常用的基本元件,用于实现逻辑运算。
常见的逻辑门有与门、或门、非门、异或门等。
在本次实验中,我们将使用与门和异或门来构建4位二进制加法器。
四、实验步骤1. 设计4位二进制加法器的电路图根据实验要求,我们需要设计一个能够计算两个4位二进制数相加的电路。
首先,我们可以将两个4位二进制数分别用D0~D3和E0~E3表示,其中D0和E0分别为最低位。
然后,我们需要使用与门和异或门来实现加法器的功能。
通过逻辑运算,我们可以得到每一位的和以及进位。
最后,将每一位的和连接起来,即可得到最终的结果。
2. 搭建电路根据电路图,我们可以开始搭建实验电路。
首先,将所需的逻辑门和触发器连接起来,形成一个完整的电路。
然后,将所需的输入信号和电源连接到电路上。
最后,使用示波器等工具检查电路的工作状态,确保电路正常运行。
3. 进行实验测试在搭建好电路后,我们可以进行实验测试。
首先,将两个4位二进制数的输入信号连接到电路上。
然后,通过观察输出信号,判断电路是否正确计算了两个二进制数的相加结果。
如果输出信号与预期结果一致,说明电路设计和搭建成功。
五、实验结果与分析在进行实验测试后,我们可以得到实验结果。
通过观察输出信号,我们可以判断电路是否正确计算了两个二进制数的相加结果。
北邮-数电实验报告

北邮-数电实验报告数字电路实验报告学院:信息与通信工程专业:信息工程班级:2013211125学号:2013210681姓名:袁普实验一:QuartusⅡ原理图输入法设计与实现一:实验要求①:用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
②:用实验一生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
③:用3线—8线译码器和逻辑门设计实现函数F,仿真验证其功能,下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
二:报告内容①:实验一(2)的原理图用两个已经生成的半加器图形模块单元和一个双输入或门即可实现全加器②:仿真波形图以及分析波形图:波形分析:通过分析ab ci三个输入在8中不同组合下的输出,发现与全加器的真值表吻合,说明实现了全加器的逻辑功能。
同时看见波形中出现了毛刺(冒险),这也与事实一致。
③:故障及问题分析第一次在做全加器的时候发现找不到已经生成的半加器模块,后来发现是因为在建立工程时这两个项目没有建在同一个文件夹里,在调用的时候就找不到。
后来我将全加器工程建在同一个文件夹里解决了此问题。
实验二:用VHDL设计和实现组合逻辑电路一:实验要求①:用VHDL设计一个8421码转换为格雷码的代码转换器,仿真验证其功能。
②:用VHDL设计一个4位二进制奇校验器,要求在为奇数个1时输出为1,偶数个1时输出为0,仿真验证其功能。
③:用VHDL设计一个数码管译码器,仿真验证其功能,下载到实验板测试,要求用拨码开关设定输入信号,数码管显示输出信号,并且只使一个数码管有显示,其余为熄灭状态。
二:故障及问题分析在刚开始实现让一个数码管显示的时候,我本来准备再设置6个输入和输出,通过实验板上的拨码来输入信息分别控制不同的数码管的的开闭状态,但是后来发现这样效率很低而且实验板上的拨码开关数量根本不够。
北邮数电综合实验报告

北邮数电综合实验报告综合实验报告:基于北邮数电实验的电子门禁系统设计与实现摘要:本次实验通过使用北邮数电实验室提供的器件和设备,设计并实现了一个简易的电子门禁系统。
该系统能够通过输入正确的密码或使用合法的身份卡,实现对门禁的控制和管理。
本文将详细介绍系统设计的原理、实验过程和结果,并对实验进行了总结和评价。
一、引言电子门禁系统是当前社会中广泛应用的一种重要安全保障设施。
它通过使用密码、身份卡等识别方式,对人员出入进行控制和管理。
本实验旨在通过北邮数电实验的学习和实践,学习和掌握电子门禁系统的设计与实现。
二、实验器材与原理实验器材: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显示屏等器材,通过单片机控制,实现了一个简易的电子门禁系统。
北邮数电实验报告

北京邮电大学实验报告实验名称: 数电电路与逻辑设计实验学院:信息与通信工程学院班 级: 姓 名: 学 号: 班内序号:日期:一. 实验一:QuartusII 原理图输入法设计1. 实验名称和实验任务要求(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块 元。
(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号入信号。
(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数F=A B C +A B C +AB C +A B C 。
2.实验原理图及波形图(1)半加器(2)全加器(3)74LS383.仿真波形图分析(1)半加器:输入为a,b,输出S,CO(进位)。
当ab都为0时,半加和s=0,进位端co=0。
当ab都为1时,半加和s=0,进位端co=1。
当a=1,b=0或a=0,b=1时,半加和s=1,进位端co=0。
(2)全加器:输入a,b,输出S,CO(进位),ci(低进位)。
当a=0,b=0,ci=0,输出s=0,co=0。
当a=0,b=1或a=1,b=0又ci=0,输出s=1,co=0。
当a=0,b=0,ci=1,输出s=1,co=0。
(3)74LS138输入A,B,C,输出为3。
四个输出对应F中的四个最小项,Y0、Y2、Y4、Y7,以实现函数功能。
二.实验二:用VHDL设计与实现组合逻辑电路1.实验名称和实验任务要求(1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能。
要求用拨码开关设定输入信号,7段数码管显示输出信号。
(2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个’1’时,输出为’1’,否则输出’0’,仿真验证其功能。
北邮数电实验报告

北邮数电实验报告1. 实验目的本实验的目的是通过实际操作和实验验证,加深对数字电路的理解和掌握。
具体实验内容包括: 1. 实现各种基本逻辑电路(与门、或门、非门、异或门等)的电路设计。
2. 学习使用开关和LED灯进行数字信号输入和输出。
3. 掌握数字电路实验中常用的仪器设备的使用方法。
2. 实验器材和环境本实验所使用的器材和环境如下: - FPGA实验箱 - 数字逻辑集成电路(与门、或门、非门、异或门等) - 电源 - 接线板 - 数字电路实验仪器3. 实验步骤3.1 实验准备首先,我们需要将实验所需的器材连接好,包括将数字逻辑集成电路插入到FPGA实验箱上的插槽中,并将电源正确连接。
3.2 电路设计与布线根据实验要求,我们需要设计不同的基本逻辑电路。
比如,要设计一个与门电路,可以通过将两个输入端分别与两个开关连接,将输出端连接到一个LED灯上。
其他的逻辑电路同样可以设计类似的方式。
在设计和布线的过程中,需要注意保持电路的连通性,并避免出现短路等问题。
3.3 输入和输出信号设置根据实验要求,我们需要设置输入和输出信号。
可以通过控制开关的开合状态来设置输入信号,然后观察LED灯的亮灭情况来判断输出信号的状态是否符合预期。
3.4 实验数据记录和分析在实验过程中,我们需要记录每个逻辑电路的输入和输出信号状态,并进行分析。
可以通过绘制真值表或者逻辑门表来记录并分析数据。
4. 实验结果与分析根据实验步骤中记录的数据,我们可以得出实验结果,并进行进一步的分析。
比如,可以通过比对设计的逻辑电路输出和预期输出的差异,来判断实验是否成功完成。
5. 总结与反思通过本次实验,我深入了解和掌握了数字电路的基本原理和实验方法。
通过设计和实验验证,加深了对基本逻辑电路的理解,并熟悉了数字电路实验所使用的仪器设备。
在实验过程中,我遇到了一些问题,比如电路连接错误导致的信号不稳定等,但通过仔细调试和排查,最终解决了这些问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北邮数电实验报告-信息————————————————————————————————作者:————————————————————————————————日期:数字电路与逻辑设计实验姓名***学院信息与通信工程学院专业信息工程班级***学号****班内序号***实验一一、实验名称和实验任务要求1.实验内容:QuartusII原理图输入法设计与实现。
2.实验目的:(1)熟悉用QuartusII原理图输入法进行电路设计和仿真。
(2)掌握QuartusII图形模块单元的生成与调用。
(3)熟悉实验板的使用。
3.实验任务要求:(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。
(2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用3线—8线译码器(74LS138)和逻辑门实现函数F=(/)(/)(/)+(/)(/)+(/)(/)+,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
二、原理图半加器模块和逻辑门设计实现的全加器:三、仿真波形图及分析电路实现了全加器的功能。
全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。
由其原理可得逻辑表达式:sum=ain⊕bin⊕cincout = (ain⊕bin)cin + ain*bin。
列出真值表:输入输出ain bin cin cout sum0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1仿真波形对比真值表,可以看出波形图与理论值完全符合。
四、故障及问题分析1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。
解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。
2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟也没继续下载。
解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。
实验二一、实验名称和实验任务要求1.实验内容:用VHDL设计与实现组合逻辑电路。
2.实验目的:(1)熟悉用VHDL语言设计组合逻辑电路的方法。
(2)熟悉用QuartusII文本输入法进行电路设计。
3.实验任务要求:(1)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出‘0’,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,7段数码管显示输出信号。
二、VHDL代码1.奇校验器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jijiaoyanqi ISPORT( A:STD_LOGIC;B:STD_LOGIC;C:STD_LOGIC;D:STD_LOGIC;F:OUT STD_LOGIC);END jijiaoyanqi;ARCHITECTURE one OF jijiaoyanqi ISSIGNAL n1,n2 : STD_LOGIC;BEGINn1<=A XOR B;n2<=n1 XOR C;F<=n2 XOR D; --异或,A⊕B⊕C⊕DEND one;2.8421码转余3码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY basizhuanyu3 ISPORT( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END basizhuanyu3;ARCHITECTURE zhuanyu3 OF basizhuanyu3 ISBEGINPROCESS(A)BEGINCASE A ISWHEN"0000"=> B<="0011";WHEN"0001"=> B<="0100";WHEN"0010"=> B<="0101";WHEN"0011"=> B<="0110";WHEN"0100"=> B<="0111";WHEN"0101"=> B<="1000";WHEN"0110"=> B<="1001";WHEN"0111"=> B<="1010";WHEN"1000"=> B<="1011";WHEN"1001"=> B<="1100";WHEN OTHERS=> B<="ZZZZ";END CASE;END PROCESS;END zhuanyu3;3.数码管译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shumaguanyimaqi ISPORT( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END shumaguanyimaqi;ARCHITECTURE shuma OF shumaguanyimaqi ISBEGINPROCESS(A)BEGINC<="011111";CASE 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<="ZZZZZZZ";END CASE;END PROCESS;END shuma;三、故障及问题分析1、问题:代码写好以后编译出现错误,Error (10568): VHDL error atjijiaoyanqi.vhd(17): can't write to interface object "partout" of mode IN,由于报错指到了第17行F<=n2 XOR D; 导致我开始的时候没意识到这是哪里的错误。
解决方法:在百度查了以后发现是F:OUT STD_LOGIC); 这句我写成了F:IN STD_LOGIC);以后要注意少犯这些马虎的错误。
2、问题:把代码下载到板子上的过程中,再次出现了第一节课出现的下载停止的问题,再次尝试后也没有下载成功,第三次接线的时候等了好久,Hardware Setup窗口也没有显示有硬件接入。
解决方法:换了一台电脑尝试然后成功了,我觉得可能是两个原因,一是我反复操作导致软件反应时间长,二是我本来用的电脑接口连接不好。
实验三一、实验名称和实验任务要求1.实验内容:用VHDL设计与实现时序逻辑电路。
2.实验目的:(1)熟悉用VHDL语言设计时序逻辑电路的方法。
(2)熟悉用QuartusII文本输入法进行电路设计。
3.实验任务要求:(1)用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器。
要求在QuartusII平台上设计程序并仿真验证设计。
(2)用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。
要求用按键设定输入信号,发光二极管显示输出信号。
(3)将(1)、(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。
二、模块端口说明及连接图1.整个电路输入端:时钟信号CLK,复位键CLR。
2.分频器及计数器的端口连接:复位键CLR作为分频器复位键CLR1、8421十进制计数器复位键CLR2;时钟信号CLK作为分频器的时钟信号CLK1,分频器输出CLK_OUT1作为8421十进制计数器的时钟信号CLK2;计数器的输出Q[0,1,2,3]作为数码管译码器的输入a [0,1,2,3]。
3.整个电路输出端:b[0,1,2,3,4,5,6],分别对应7段数码管;c[0,1,2,3,4,5],分别对应6个数码管译码器。
三、VHDL代码(1)8421十进制计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZY8421shijinzhi ISPORT(CLK2,CLR2:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ZY8421shijinzhi;ARCHITECTURE behave OF ZY8421shijinzhi ISSIGNAL Q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK2,CLR2)BEGINIF CLR2 = '1' THEN Q_temp <="0000";ELSIF CLK2'EVENT AND CLK2 = '1' THENIF Q_temp = "1001" THEN Q_temp <="0000";ELSE Q_temp <=Q_temp+1;END IF;END IF;END PROCESS;Q <=Q_temp;END behave;(2) 分频器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY div_50M ISPORT(CLK1,CLR1:IN STD_LOGIC;CLK_OUT1:OUT STD_LOGIC);END div_50M;ARCHITECTURE behave OF div_50M ISSIGNAL temp:INTEGER RANGE 0 TO 24999999;SIGNAL clkout:STD_LOGIC;BEGINPROCESS(CLK1,CLR1)BEGINIF CLR1 = '1' THEN temp <=0;ELSIF CLK1'EVENT AND CLK1 = '1' THENIF temp = 24999999 THEN temp <=0;clkout <=NOT clkout;ELSE temp <=temp+1;END IF;END IF;END PROCESS ;CLK_OUT1 <=clkout;END behave;(3) 将分频器、8421十进制计数器和数码管译码器3个电路的连接电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY function3 ISPORT(CLK,CLR:IN STD_LOGIC;b: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);c: OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END function3 ;ARCHITECTURE a1 OF function3 ISCOMPONENT div_50M --调用分频器和计数器两个元件PORT(CLK1,CLR1:IN STD_LOGIC;CLK_OUT1:OUT STD_LOGIC);END COMPONENT;COMPONENT ZY8421shijinzhiPORT(CLK2,CLR2:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL a : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL clkin : STD_LOGIC;BEGINu1:div_50M PORT MAP (CLK1=>CLK,CLR1=>CLR,CLK_OUT1=>clkin);u2: ZY8421shijinzhi PORT MAP (CLK2=>clkin,CLR2=>CLR,Q=>a);PROCESS(a)BEGINc<=" 110111"; --左数第三个数码管亮CASE 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<="1111110"; --0END CASE;END PROCESS;END;四、仿真波形图及分析分析仿真波形图可知,c为110111,左数第三个数码管亮;数码管译码器循环显示0到9这10个数字;复位信号CLK是高电平有效,从波形中看出CLR=1时输出b=1111110,数码管显示数字0。