北邮数电大二下实验四
- 格式:doc
- 大小:39.00 KB
- 文档页数:11
数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求: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)掌握较复杂的逻辑设计和调试。
(2)学习用原理图+VHDL语言设计逻辑电路。
(3)学习数字电路模块层次设计。
(4)掌握ispLEVER 软件的使用方法。
(5)掌握ISP 器件的使用。
二、实验所用器件和设备在系统可编程逻辑器件ISP1032 一片示波器一台万用表或逻辑笔一只TEC-5实验系统,或TDS-2B 数字电路实验系统一台三、实验内容数字显示电子钟1、任务要求(1)、时钟的“时”要求用两位显示;上、下午用发光管作为标志;(2)、时钟的“分”、“秒”要求各用两位显示;(3)、整个系统要有校时部分(可以手动,也可以自动),校时时不能产生进位;(4)*、系统要有闹钟部分,声音要响5秒(可以是一声一声的响,也可以连续响)。
VHDL源代码:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;----主体部分-ENTITY clock isport(clk,clr,put,clk1 : in std_logic; -- clr 为清零信号,put 为置数脉冲,clk1 为响铃控制时钟choice : in std_logic; --用来选择时钟状态的脉冲信号lighthour : out std_logic_vector(10 downto 0);lightmin : out std_logic_vector(7 downto 0);lightsec : out std_logic_vector(7 downto 0); --输出显示ring : out std_logic); --响铃信号end clock;--60进制计数器模块ARCHITECTURE func of clock iscomponent counter_60port(clock : in std_logic;clk_1s : in std_logic;putust : in std_logic;clr : in std_logic;load : in std_logic;s1 : out std_logic_vector(3 downto 0);s10 : out std_logic_vector(3 downto 0);co : out std_logic);end component;--24进制计数器模块component counter_24port(clock : in std_logic;clk_1s : in std_logic;putust : in std_logic;clr : in std_logic;load : in std_logic;s1 : out std_logic_vector(3 downto 0);s10 : out std_logic_vector(6 downto 0));end component;signal sec,a:std_logic; --- 2 分频产生1s信号signal l1,l2,l3:std_logic; ---判定对时间三部分修改signal c1,c2:std_logic; ---进位信号signal load:std_logic_vector(1 downto 0);signal temp:integer range 0 to 2499;signal temp1:integer range 0 to 95; --计数信号signal sec_temp:std_logic_vector(7 downto 0);--总进程beginu1 : counter_60 port map (sec,sec,put,clr,l1,sec_temp(3 downto 0),sec_temp(7 downto 4),c1); u2 : counter_60 port map (c1,sec,put,clr,l2,lightmin(3 downto 0),lightmin(7 downto 4),c2);u3 : counter_24 port map (c2,sec,put,clr,l3,lighthour(3 downto 0),lighthour(10 downto 4)); lightsec(7 downto 0)<=sec_temp(7 downto 0);--状态转换process (choice)beginif (choice'event and choice='1') thencase load iswhen "00" => l1<='0'; --非修改状态l2<='0';l3<='0';load<="01";when "01" => l1<='0'; --此状态下对小时进行修改l2<='0';l3<='1';load<="10";when "10" => l1<='0'; --此状态下对分钟进行修改l2<='1';l3<='0';load<="11";when others => l1<='1'; --此状态下对秒进行修改l2<='0';l3<='0';load<="00";end case;end if;end process;--计数进程process(clk)beginif (clk'event and clk='1') then --分频if (temp=2499) thentemp <= 0;sec<=not sec;elsetemp <= temp+1;end if;end if;end process;--响铃进程process(clk1)beginif(clk1'event and clk1='1') thenif (temp1=95) thentemp1<=0;a<=not a;elsetemp1<=temp1+1;end if;end if;end process;ring<=a when (c2='1' and sec_temp<5 and sec='1') else --5s整点响铃'0';end func;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter_60 isport (clock : in std_logic; --计数信号,即低位的进位信号或时钟脉冲信号clk_1s : in std_logic; --周期1s 的时钟信号putust : in std_logic; --调表置数信号clr : in std_logic; --清零load : in std_logic; --判定信号s1 : out std_logic_vector(3 downto 0); --计数器的个位s10 : out std_logic_vector(3 downto 0); --计数器的十位co : out std_logic );end counter_60;if(load=1 ) --防止脉冲产生进位co_ temp<=’0’;architecture func of counter_60 issignal s1_temp: std_logic_vector(3 downto 0);signal s10_temp : std_logic_vector(3 downto 0);signal clk,co_temp : std_logic;beginclk<=clock when load='0' elseputust;process (clk,clr)beginif (clr='1') thens1_temp <= "0000";s10_temp <= "0000";elsif (clk'event and clk='1')then --进位判断if (s1_temp=9) thens1_temp <= "0000";if (s10_temp=5) thens10_temp <= "0000";co_temp<='1';elseco_temp<='0';s10_temp <= s10_temp+1;end if;elseco_temp<='0';s1_temp <= s1_temp+1;end if;end process;s1 <= s1_temp when (clk_1s='1'or load='0') else"1111";s10 <= s10_temp when (clk_1s='1' or load='0') else"1111";co <= co_temp when (load='0') else'0';end func;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;--24进制计数器entity counter_24 isport(clock : in std_logic; --计数信号clk_1s : in std_logic; --周期1s 的时钟信号putust : in std_logic;clr : in std_logic; --清零信号load : in std_logic; --判定信号s1 : out std_logic_vector(3 downto 0); --计数器的个位s10 : out std_logic_vector(6 downto 0)); --计数器的十位end counter_24;architecture func of counter_24 issignal s1_temp : std_logic_vector(3 downto 0);signal s10_temp : std_logic_vector(1 downto 0);signal clk : std_logic;beginclk<=clock when load='0' elseprocess (clk,clr)beginif (clr='1') thens1_temp <= "0000";s10_temp <= "00";elsif (clk'event and clk='1') thenif (s1_temp=3 and s10_temp=2) then s1_temp <= "0000";s10_temp <= "00";elsif (s1_temp=9) thens1_temp<="0000";s10_temp<=s10_temp+1;elses1_temp <= s1_temp+1;end if;end if;end process;--显示进程process(s10_temp)beginif (clk_1s='1' or load='0') thencase s10_temp iswhen "00" => s10<="1111110";when "01" => s10<="0110000";when "10" => s10<="1101101";when others => null;end case;elses10<="0000000";end if;end process;s1 <= s1_temp when (clk_1s='1' or load='0') else"1111";end func;四、实验小结:注意当时钟处于被修改状态时,即对时、分、秒的值进行修改时,不应产生进位,产生很多莫名其妙的错误,如修改后有进位(分钟为00)时,或者自行到整点响铃后,再次给脉冲会进位的情况。
邮电大学数字电路与逻辑设计实验学院:班级::学号:班序号:实验一一、实验名称Quartus II 原理图输出法设计(一)半加器二、实验任务要求用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
三、设计思路和过程◎设计思路半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。
数据输入:被加数AI、加数BI数据输出:半加和SO、进位CO◎设计过程(1)列出真值表01 1 010 1 0110 1*表中两个输入是加数AI和BI,输出有一个是和SO,另一个是进位CO。
(2)根据真值表写出输出逻辑表达式该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下:AI=。
所以,可以用一个两输入异或门和一个两输入与门CO⋅SO⊕BIAI=,BI实现。
◎实验原理图四、仿真波形图及分析根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。
但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。
(二)全加器二、实验任务要求用实验容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
三、设计思路和过程◎设计思路全加器与半加器的区别在于全加器有一个低进位CI,从外部特性来看,它是一个三输入两输出的器件。
◎设计过程(1)全加器的真值表如下*其中AI 为被加数,BI 为加数,CI 为相邻低位来的进位数。
输出本位和为SO ,向相邻高位进位数为CO 。
(2)根据真值表写出逻辑表达式:CI BI AI SO ⊕⊕=,BI AI CI BI AI CO ⋅+⋅⊕=)(根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器。
◎实验原理图。
北京邮电大学数字电路与逻辑设计实验学院:班级:姓名:学号:班内序号:实验一一、实验名称Quartus II 原理图输出法设计(一)半加器二、实验任务要求用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
三、设计思路和过程◎设计思路半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。
数据输入:被加数AI、加数BI数据输出:半加和SO、进位CO◎设计过程,输出有一个是和SO,另一个是进位CO。
(2)根据真值表写出输出逻辑表达式该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下:AICO⋅=。
所以,可以用一个两输入异或门和一个两输入与门SO⊕=,BIBIAI实现。
◎实验原理图四、仿真波形图及分析根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。
但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。
(二)全加器二、实验任务要求用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
三、设计思路和过程 ◎设计思路全加器与半加器的区别在于全加器有一个低进位CI ,从外部特性来看,它是一个三输入两输出的器件。
◎设计过程SO ,向相邻高位进位数为CO 。
(2)根据真值表写出逻辑表达式:CI BI AI SO ⊕⊕=,BI AI CI BI AI CO ⋅+⋅⊕=)(根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器。
◎实验原理图四、仿真波形图及分析根据仿真波形对比全加器真值表,可以确定电路实现了全加器的功能。
(三)3线—8线译码器二、实验任务要求用3线—8线译码器(74LS138)和逻辑门设计实现函数CBF+A++=,仿真验证其功能,并下载到实验板测试。
北邮数电实验报告北邮数电实验报告一、引言数电实验是电子信息类专业学生必修的一门实验课程,通过实践操作,帮助学生巩固理论知识,培养实际动手能力。
本次实验旨在通过设计和搭建一个简单的数字电路,来理解数字电路的基本原理和工作方式。
二、实验目的本次实验的目的是设计一个4位二进制加法器,实现两个4位二进制数的相加运算。
通过实验,我们可以加深对于数字电路的理解,掌握数字电路的设计和搭建方法。
三、实验原理1. 二进制加法器二进制加法器是一种用于计算二进制数相加的数字电路。
它由若干个逻辑门和触发器组成,可以实现二进制数的加法运算。
在本次实验中,我们将设计一个4位二进制加法器,即可以计算两个4位二进制数的相加结果。
2. 逻辑门逻辑门是数字电路中常用的基本元件,用于实现逻辑运算。
常见的逻辑门有与门、或门、非门、异或门等。
在本次实验中,我们将使用与门和异或门来构建4位二进制加法器。
四、实验步骤1. 设计4位二进制加法器的电路图根据实验要求,我们需要设计一个能够计算两个4位二进制数相加的电路。
首先,我们可以将两个4位二进制数分别用D0~D3和E0~E3表示,其中D0和E0分别为最低位。
然后,我们需要使用与门和异或门来实现加法器的功能。
通过逻辑运算,我们可以得到每一位的和以及进位。
最后,将每一位的和连接起来,即可得到最终的结果。
2. 搭建电路根据电路图,我们可以开始搭建实验电路。
首先,将所需的逻辑门和触发器连接起来,形成一个完整的电路。
然后,将所需的输入信号和电源连接到电路上。
最后,使用示波器等工具检查电路的工作状态,确保电路正常运行。
3. 进行实验测试在搭建好电路后,我们可以进行实验测试。
首先,将两个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结构框图由结构框图可以分析得出,该系统的的主体是计数控制器。
该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。
该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。
因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。
北邮-数电实验报告数字电路实验报告学院:信息与通信工程专业:信息工程班级: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.实验1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14 ISPORT(clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END GKY07P14;ARCHITECTURE behave OF GKY07P14 ISSIGNAL q_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt:INTEGER RANGE 0 TO 5;BEGINp1:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(cnt=5)THEN cnt<=0;ELSEcnt<=cnt+1;END IF;END IF;END PROCESS;p2:PROCESS(cnt)BEGINIF(clear='0')THEN count<="111111";ELSECASE cnt ISWHEN 1=>count<="101111";q_temp<="0110000";WHEN 2=>count<="110111";q_temp<="1101101";WHEN 3=>count<="111011";q_temp<="1111001";WHEN 4=>count<="111101";q_temp<="0110011";WHEN 5=>count<="111110";q_temp<="1011011";WHEN 0=>count<="011111";q_temp<="1111110";END CASE;END IF;END PROCESS;countout<=count;q<=q_temp;END behave;2.实验2.1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14 ISPORT( clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END GKY07P14;ARCHITECTURE behave OF GKY07P14 ISSIGNAL q_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt,cnt1:INTEGER RANGE 0 TO 5;SIGNAL tmp:INTEGER RANGE 0 TO 15999;signal clk1:STD_LOGIC;BEGINp0:PROCESS(clk,clear)BEGINIF clear='0' THEN tmp<=0;ELSIF clk'EVENT AND clk='1' THENIF tmp=15999 THENtmp<=0;ELSEtmp<=tmp+1;END IF;END IF;END PROCESS p0;p1:PROCESS(tmp)BEGINIF clk'EVENT AND clk='1' THENIF tmp<1000 THENclk1<='0';ELSEclk1<='1';END IF;END IF;END PROCESS p1;p2:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(cnt=5)THEN cnt<=0;ELSEcnt<=cnt+1;END IF;END IF;END PROCESS p2;p3:PROCESS(clk1)BEGINIF(clk1'EVENT AND clk1='1')THENIF(cnt1=5)THEN cnt1<=0;ELSEcnt1<=cnt1+1;END IF;END IF;END PROCESS p3;p4:PROCESS(cnt,cnt1)BEGINIF(clear='0')THEN q_temp<="0000000";ELSECASE cnt+cnt1 ISWHEN 0=>q_temp<="1111110";WHEN 1=>q_temp<="0110000";WHEN 2=>q_temp<="1101101";WHEN 3=>q_temp<="1111001";WHEN 4=>q_temp<="0110011";WHEN 5=>q_temp<="1011011";WHEN 6=>q_temp<="1111110";WHEN 7=>q_temp<="0110000";WHEN 8=>q_temp<="1101101";WHEN 9=>q_temp<="1111001";//WHEN 10=>q_temp<="0110011";// WHEN 11=>q_temp<="1011011"; WHEN OTHERS =>q_temp<="0000000";END CASE;END IF;END PROCESS p4;q<=q_temp;p5:PROCESS(cnt)BEGINIF(clear='0')THEN count<="111111";ELSECASE cnt ISWHEN 0=>count<="011111";WHEN 1=>count<="101111";WHEN 2=>count<="110111";WHEN 3=>count<="111011";WHEN 4=>count<="111101";WHEN 5=>count<="111110";WHEN OTHERS =>count<="111111";END CASE;END IF;END PROCESS p5;countout<=count;END behave;3.实验2.2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14 ISPORT( clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);countout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END GKY07P14;ARCHITECTURE behave OF GKY07P14 ISSIGNAL q_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt,cnt1:INTEGER RANGE 0 TO 11;SIGNAL tmp:INTEGER RANGE 0 TO 15999; signal clk1:STD_LOGIC;BEGINp0:PROCESS(clk,clear)BEGINIF clear='0' THEN tmp<=0;ELSIF clk'EVENT AND clk='1' THENIF tmp=15999 THENtmp<=0;ELSEtmp<=tmp+1;END IF;END IF;END PROCESS p0;p1:PROCESS(tmp)BEGINIF clk'EVENT AND clk='1' THENIF tmp<1000 THENclk1<='0';ELSEclk1<='1';END IF;END IF;END PROCESS p1;p2:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(cnt=11)THEN cnt<=0;ELSEcnt<=cnt+1;END IF;END IF;END PROCESS p2;p3:PROCESS(clk1)BEGINIF(clk1'EVENT AND clk1='1')THENIF(cnt1=11)THEN cnt1<=0;ELSEcnt1<=cnt1+1;END IF;END IF;END PROCESS p3;p4:PROCESS(cnt,cnt1)BEGINIF(clear='0')THEN q_temp<="0000000";ELSECASE cnt+cnt1 ISWHEN 6=>q_temp<="1111110";WHEN 7=>q_temp<="0110000";WHEN 8=>q_temp<="1101101";WHEN 9=>q_temp<="1111001";WHEN 10=>q_temp<="0110011";WHEN 11=>q_temp<="1011011";WHEN OTHERS =>q_temp<="0000000";END CASE;END IF;END PROCESS p4;q<=q_temp;p5:PROCESS(cnt)BEGINIF(clear='0')THEN count<="111111";ELSECASE cnt ISWHEN 0=>count<="011111";WHEN 1=>count<="101111";WHEN 2=>count<="110111";WHEN 3=>count<="111011";WHEN 4=>count<="111101";WHEN 5=>count<="111110";WHEN OTHERS =>count<="111111";END CASE;END IF;END PROCESS p5;countout<=count;END behave;。