EDA实验报告
EDA实验报告

EDA实验报告班级:姓名:目录实验一:七段数码显示译码器设计 (1)摘要 (1)实验原理 (1)实验方案及仿真 (1)引脚下载 (2)实验结果与分析 (3)附录 (3)实验二:序列检测器设计 (6)摘要 (6)实验原理 (6)实现方案及仿真 (6)引脚下载 (7)实验结果与分析 (8)实验三:数控分频器的设计 (11)摘要 (11)实验原理 (11)方案的实现与仿真 (11)引脚下载 (12)实验结果及总结 (12)附录 (12)实验四:正弦信号发生器 (14)摘要 (14)实验原理 (14)实现方案与仿真 (14)嵌入式逻辑分析及管脚下载 (16)实验结果与分析 (17)附录 (18)实验一:七段数码显示译码器设计摘要:七段译码器是一种简单的组合电路,利用QuartusII的VHDL语言十分方便的设计出七段数码显示译码器。
将其生成原理图,再与四位二进制计数器组合而成的一个用数码管显示的十六位计数器。
整个设计过程完整的学习了QuartusII的整个设计流程。
实验原理:七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA\CPLD中来实现。
本实验作为7段译码器,输出信号LED7S的7位分别是g、f、e、d、c、b、a,高位在左,低位在右。
例如当LED7S 输出为“1101101”时,数码管的7个段g、f、e、d、c、b、a分别为1、1、0、1、1、1、0、1。
接有高电平段发亮,于是数码管显示“5”。
实验方案及仿真:I、七段数码显示管的设计实现利用VHDL描述语言进行FPGA上的编译实现七段数码显示译码器的设计。
运行QuartusII在G:\QuartusII\LED7S\下新建一个工程文件。
新建一个vhdl语言编译文件,编写七段数码显示管的程序见附录1-1。
EDA-实验报告

实验一五人表决器设计一、实验目的1 加深对电路理论概念的理解3 加深计算机辅助分析及设计的概念4 了解及初步掌握对电路进行计算机辅助分析的过程二、实验要求制作一个五人表决器,共五个输入信号,一个输出信号。
若输入信号高电平数目多于低电平数目,则输出为高,否则为低。
三、实验原理根据设计要求可知,输入信号共有2^5=32种可能,然而输出为高则有15种可能。
对于本设计,只需一个模块就能完成任务,并采用列写真值表是最简单易懂的方法。
四、计算机辅助设计设A,B,C,D,E引脚为输入引脚,F为输出引脚。
则原理图如1所示图1.1 五人表决器原理图实验程序清单如下:MODULE VOTEA,B,C,D,E PIN;F PIN ISTYPE 'COM';TRUTH_TABLE([A,B,C,D,E]->[F])[0,0,1,1,1]->[1];[0,1,1,1,0]->[1];[0,1,0,1,1]->[1];[0,1,1,0,1]->[1];[1,0,1,1,1]->[1];[1,1,0,1,1]->[1];[1,1,1,0,1]->[1];[1,1,1,1,0]->[1];[1,1,1,0,0]->[1];[1,1,0,1,0]->[1];[1,1,1,1,1]->[1];[1,1,0,0,1]->[1];[1,0,0,1,1]->[1];[1,0,1,0,1]->[1];[1,0,1,1,0]->[1];END五、实验测试与仿真根据题目要求,可设输入分别为:0,0,0,0,0;1,1,1,1,1;1,0,1,0,0;0,1,0,1,1。
其测试程序如下所示:MODULE fivevoteA,B,C,D,E,F PIN;X=.X.;TEST_VECTORS([A,B,C,D,E]->[F])[0,0,0,0,0]->[X];[1,1,1,1,1]->[X];[1,0,1,0,0]->[X];[0,1,0,1,1]->[X];END测试仿真结果如图1.2所示:图1.2 五人表决器设计仿真图可知,设计基本符合题目要求。
EDA实验 报告范文

实验一:五人表决器一、程序清单library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity vote5 isport(v_in:in std_logic_vector(4 downto 0);lock,clr:in std_logic;v_over:out std_logic_vector(2 downto 0);num_agr,num_opp:out std_logic_vector(3 downto 0);v_out:out std_logic_vector(4 downto 0);led_agr,led_opp:out std_logic);end entity vote5;architecture one of vote5 isbeginprocess(clr,v_in,lock)variable agr,opp: std_logic_vector(3 downto 0);beginif(clr='1')thenled_agr<='0';led_opp<='0';agr:="0000";opp:="0000";if agr="0000" thennum_agr<="0000";end if;if opp="0000"thennum_opp<="0000";end if;v_out<="00000";v_over<="000";elsif(lock'event and lock='1')thenv_out<=v_in;v_over<="111";agr:="0000";opp:="0000";for i in 0 to 4 loopif (v_in(i)<='0') then opp:=opp+1;end if;agr:=5-opp;end loop;num_agr<=agr;num_opp<=opp;if(agr>opp)thenled_agr<='1';led_opp<='0';elseled_agr<='0';led_opp<='1';end if;end if;end process;end architecture one;三.仿真1. 功能仿真波形2.时序仿真波形实验二:九九乘法表系统的设计一、程序清单library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity multiply is --构造体描述4位乘法器port( clk:in std_logic;a,b:in std_logic_vector(3 downto 0);led_data:out std_logic_vector(7 downto 0);seg_sel:out std_logic_vector(2 downto 0) );end multiply;architecture rtl of multiply issignal led_data2,led_data1,led_data0: std_logic_vector(7 downto 0);--LED显示代码,寄存十位个位的数signal displayclk: std_logic;beginprocess(a,b)variable s: std_logic_vector(7 downto 0);--乘积variable bai,shiwei,gewei: std_logic_vector(3 downto 0);--乘积的十位个位begins(7 downto 0):=a(3 downto 0)*b(3 downto 0);if s>="11001000" then bai:="0010";s:=s-"11001000";elsif s>="01100100" then bai:="0001";s:=s-"01100100";else bai:="0000";end if;if s>="01011010" then shiwei:="1001";s:=s-"01011010";gewei:=s(3 downto 0);--90以上 elsif s>="01010000" then shiwei:="1000";s:=s-"01010000";gewei:=s(3 downto 0);--80以上 elsif s>="01000110" then shiwei:="0111";s:=s-"01000110";gewei:=s(3 downto 0); --70以上 elsif s>="00111100" then shiwei:="0110";s:=s-"00111100";gewei:=s(3 downto 0);--60以上 elsif s>="00110010" then shiwei:="0101";s:=s-"00110010";gewei:=s(3 downto 0);--50以上 elsif s>="00101000" then shiwei:="0100";s:=s-"00101000";gewei:=s(3 downto 0);--40以上 elsif s>="00011110" then shiwei:="0011";s:=s-"00011110";gewei:=s(3 downto 0);--30以上 elsif s>="00010100" then shiwei:="0010";s:=s-"00010100";gewei:=s(3 downto 0);--20以上 elsif s>="00001010" then shiwei:="0001";s:=s-"00001010";gewei:=s(3 downto 0);--10以上 else gewei:=s(3 downto 0);shiwei:="0000";end if;case bai iswhen "0001" => led_data2<="11111001";when "0010" => led_data2<="10100100";when others => led_data2<="11111111";end case;case shiwei iswhen "0000" => led_data1<="11000000";when "0001" => led_data1<="11111001";when "0010" => led_data1<="10100100";when "0011" => led_data1<="10110000";when "0100" => led_data1<="10011001";when "0101" => led_data1<="10010010";when "0110" => led_data1<="10000010";when "0111" => led_data1<="11111000";when "1000" => led_data1<="10000000";when "1001" => led_data1<="10010000";when others => led_data1<="11111111";end case;case gewei iswhen "0000" => led_data0<="11000000";when "0001" => led_data0<="11111001";when "0010" => led_data0<="10100100";when "0011" => led_data0<="10110000";when "0100" => led_data0<="10011001";when "0101" => led_data0<="10010010";when "0110" => led_data0<="10000010";when "0111" => led_data0<="11111000";when "1000" => led_data0<="10000000";when "1001" => led_data0<="10010000";when others => led_data0<="11111111";end case;end process;process(clk)variable cnt:integer range 0 to 20000; --1KHZ扫描显示时钟 beginif clk'event and clk='1' then cnt:=cnt+1;if cnt<10000 then displayclk<='1';elsif cnt<20000 then displayclk<='0';else cnt:=0;displayclk<='0';end if;end if;end process;process (displayclk) --显示两位variable cnt2: std_logic_vector(1 downto 0);beginif displayclk'event and displayclk='1' then cnt2:=cnt2+1;if cnt2="01" then seg_sel<="001";led_data<=led_data0;elsif cnt2="010" then seg_sel<="010";led_data<=led_data1;elsif cnt2="11" then cnt2:="00"; seg_sel<="100";led_data<=led_data2;end if;end if;end process;end rtl;二、仿真设计输入文件经maxplus软件开发系统编译、处理,由功能仿真器进行模拟,获得仿真波形如图6所示。
eda技术实验报告

EDA技术实验报告1. 背景介绍EDA(Exploratory Data Analysis)是指探索性数据分析,是数据科学和机器学习中一项重要的任务。
通过EDA技术,我们可以对数据集进行可视化和统计分析,从而深入了解数据的特征和结构,为后续的数据处理和建模提供指导。
2. 实验目的本实验旨在通过使用EDA技术来分析一个给定的数据集,并从中获取有价值的信息。
通过实践,我们将深入了解EDA技术的应用和优势。
3. 实验步骤步骤1:导入数据首先,我们需要将实验所需的数据导入到Python的数据分析库中。
我们可以使用pandas库读取数据集,并将其存储为DataFrame对象,以便后续的分析和处理。
import pandas as pd# 读取数据集data = pd.read_csv('data.csv')步骤2:数据概览在进行数据分析之前,我们先要对数据进行整体的了解。
我们可以通过以下几个步骤来获取数据的概览信息:1.查看数据的前几行,了解数据的结构和格式。
data.head()2.查看数据的基本统计信息,包括均值、标准差、最小值、最大值等。
data.describe()3.检查数据中是否存在缺失值或异常值。
data.isnull().sum()步骤3:数据可视化EDA技术的核心之一是数据可视化。
通过可视化数据,我们可以更直观地理解数据的分布和关系。
下面是几种常用的数据可视化方法:1.直方图:用于展示数值型数据的分布情况,可以帮助我们了解数据的集中趋势和离散程度。
data['column'].plot.hist()2.散点图:用于展示两个数值型变量之间的关系,可以帮助我们发现数据的相关性。
data.plot.scatter(x='column1', y='column2')3.条形图:用于展示类别型数据的分布情况,可以帮助我们比较不同类别之间的差异。
EDA实验报告(全)

目录实验一全加器的设计 (1)一实验目的 (1)二实验要求 (1)三实验步骤: (1)四实验结果: (2)五实验注意: (2)六实验心得: (2)实验二模可变计数器的设计 (3)一实验要求 (3)二实验步骤 (3)三、实验心得: (6)实验三序列信号发生器与检测器设计 (7)一、实验目的 (7)二、设计要求 (7)三、主要仪器设备 (7)四、实验原理 (7)五、实验步骤 (8)六、实验心得 (13)实验四交通灯控制器设计 (14)一、实验目的 (14)二、设计要求 (14)三、主要仪器设备 (14)四、实验思路 (14)五、实验步骤 (15)六、实验现象及验证 (22)七、实验心得 (23)实验五多功能数字钟设计 (24)一、实验目的 (24)二、设计要求 (24)三、主要仪器设备 (24)四、实验思路 (24)五、实验步骤 (25)六、实验现象及验证 (31)七、实验心得 (31)实验六出租车计价器设计 (32)一、实验目的 (32)二、实验任务及要求 (32)三、主要仪器设备 (32)四、实验思路 (32)五、实验步骤 (33)六、实验现象及验证 (39)七、实验心得 (39)南昌大学实验报告学生姓名:xx 学号:61004100xx 专业班级:通信101实验类型:□验证□综合□设计□创新实验日期:2012-9-17 实验成绩:实验一全加器的设计一实验目的以一位二进制全加器为例熟悉利用QuartusII的原理图输入方法和文本输入法设计简单组合电路;学习多层次工程的设计方法。
二实验要求⑴用文本方法实现半加器,再采用层次设计法用原理图输入完成全加器的设计;⑵给出此项设计的仿真波形;⑶用发光LED指示显示结果。
三实验步骤:1.(1)建立工作库文件夹,建立半加器工程h_adder,输入半加器VHDL代码并存盘。
library ieee;use ieee.std_logic_1164.all;entity h_adder isport ( a, b :in std_logic;co,so :out std_logic);end entity h_adder;architecture fh1 of h_adder isbeginso<=not(a xor (not b));co<=a and b;end architecture fh1;编译后转换得到半加器的元件符号h_adder(2)在同一工作库文件夹下,建立全加器工程fa,采用层次设计法调用元件半加器h_adder和或门or2完成全加器的原理图文件。
EDA实验报告(12份).pdf

实验一组合电路的设计1. 实验目的:熟悉MAX + plus II 的VHDL 文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
2. 实验内容:设计一个2选1多路选择器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:library ieee;use ieee.std_logic_1164.all; entity mux21a isport(a,b,s:in std_logic;y:out std_logic); end entity mux21a; architecture one of mux21a is beginy<=a when s='0' else b ; end architecture one ;4. 仿真波形(如图1-1所示)图1-1 2选1多路选择器仿真波形5. 试验总结:从仿真波形可以看出此2选1多路选择器是当s为低电平时,y输出为b, 当s为高电平时,y输出为a(y<=a when s='0' else b ;),完成2路选择输出。
实验二时序电路的设计1. 实验目的:熟悉MAX + plus II VHDL文本设计过程,学习简单的时序电路设计、仿真和测试。
2. 实验验内容:设计一个锁存器,并进行仿真测试,给出仿真波形。
3. 实验程序如下:library ieee;use ieee.std_logic_1164.all;entity suocun7 isport(clk: in std_logic;en: in std_logic;D: in std_logic_vector(7 downto 0);B:out std_logic_vector(7 downto 0)); end suocun7;architecture one of suocun7 issignal K: std_logic_vector(7 downto 0); beginprocess(clk,en,D)beginif clk'event and clk='1' thenif en ='0'thenK<=D;end if;end if;end process;B<=K;end one;4.仿真波形(如图2-1所示)图2-1 8位锁存器仿真波形此程序完成的是一个8位锁存器,当时钟上升沿到来(clk'event and clk='1')、使能端为低电平(en ='0')时,输出为时钟上升沿时的前一个数,从仿真波形看,实现了此功能。
EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)

EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)EDA实验报告实验14选1数据选择器的设计一、实验目的1.学习EDA软件的基本操作。
2.学习使用原理图进行设计输入。
3.初步掌握器件设计输入、编译、仿真和编程的过程。
4.学习实验开发系统的使用方法。
二、实验仪器与器材1.EDA开发软件一套2.微机一台3.实验开发系统一台4.打印机一台三、实验说明本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。
实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。
本实验使用Quartus II 软件作为设计工具,要求熟悉Quartus II 软件的使用环境和基本操作,如设计输入、编译和适配的过程等。
实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。
例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。
学会管脚锁定以及编程下载的方法等。
四、实验要求1.完成4选1数据选择器的原理图输入并进行编译;2.对设计的电路进行仿真验证;3.编程下载并在实验开发系统上验证设计结果。
五、实验结果4选1数据选择器的原理图:仿真波形图:管脚分配:实验2 四位比较器一、实验目的1.设计四位二进制码比较器,并在实验开发系统上验证。
2.学习层次化设计方法。
二、实验仪器与器材1.EDA 开发软件 一套 2.微机 一台 3.实验开发系统 一台 4.打印机 一台 5.其它器件与材料 若干 三、实验说明本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123A A A A 和0123B B B B ,输出为M(A=B ),G (A>B )和L (A<B )(如图所示)。
用高低电平开关作为输入,发光二极管作为输出,具体管脚安排可根据试验系统的实际情况自行定义。
EDA实习报告1

贵州师范大学学生实习报告科目:EDA实习专业: 电气工程及其自动化班级: 10电气**: ***学号: ************实验项目名称:数字电子钟的设计实验项目性质:普通试验所属课程名称:VHDL程序设计一、实验目的1 学习VHDL语言的一些基本特点。
2 掌握VHDL程序的基本结构。
3掌握VHDL程序设计方法。
4 要能够用vhdl语言读懂并编写eda程序,对eda设计的总体框架能有较好的把握,掌握各模块的调用方式。
二、实验内容和要求设计一个数字时钟,显示时(2位),分(2位),秒(2位),具体要求是:具有时分秒计数显示功能,以24小时循环计时;数码管动态显示时,分,秒;具有清零功能。
在软件工具平台上,进行VHDL语言的各模块编程输入、编译实现和仿真验证。
三、实验主要仪器设备和材料计算机,开发环境MAX-PLUSII,ZY11EDA实验系统,VHDL语言。
四、实验方法、步骤及结果测试1、设计思路:数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分位60进制计数器,小时为24进制计数器,分别产生3位BCD码。
BCD码经译码,驱动后接数码显示电路。
根据实验要求,将设计分为5个主要部分,时功能模块、分功能模块、秒功能模块、扫描仪功能模块和7段LED功能模块。
在时、分、秒模块中,包括复位和预置数,其主要思路如下:秒钟的模块:设计一个60进制的计数器,以clk为其时钟信号,每60个clk后产生一个进位信号CF给分钟模块,作为分钟进程的响应信号。
秒钟模块VHDL程序见附录1:仿真波形如下:封装如下图:分钟的模块:同理于秒钟的模块,设计一个60进制的计数器,以CFM为其时钟信号,每60个CFM后产生一个进位信号CFM给小时模块,作为小时模块进程的响应信号。
分钟模块VHDL程序见附录二:仿真波形如下:封装如下图:小时的模块:为24进制计数器,在分的进位信号CFM的激发下计数,从0到23的时候产生一个信号CFH,全部清0,重新开始计时。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA实验报告题目:数显电子钟系统设计班级:姓名:学号:一.实验说明1.能够对S(秒)、MIN(分)、Hr(小时)进行计时,按24小时计时制;2.MIN、Hr位能够调整;(选做)3.要求采用多层次设计的设计方法。
(顶层用原理图输入法)4.底层设计三个模块,说明:(底层包含ABC三个模块)电子钟功能:本质上是对S(秒)信号计数实验中提供1kHz时钟,分频产生S(秒)时钟电子钟主要有三个组成部分:时基分频器、计时器、显示电路a)时基分频器:对基本时钟进行分频得到S(秒)时钟等b)计时器:主要包括S计时器(60进制)、MIN计时器(60进制)、Hr计时器(24进制)c)显示电路::用6位扫描数码显示(七段共阴极数码管)二.实验内容:1.顶层原理图:由分频模块、计时器模块和扫描显示模块组成。
端口说明:输入:clk:1kHz时钟信号输入sethour:设置小时clr:系统复位setmin:设置分钟输出:WeiXuan:6位数码管选通DuanXuan:7段数码管显示2.分频模块:(1)VHDL描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenp isport (clk:in std_logic;fout:out std_logic);end fenp;architecture a of fenp issignal ftemp:std_logic;beginprocess(clk)variable num:integer range 0 to 1000;beginif clk'event and clk='1' thenif num<500 thennum:=num+1;elsenum:=0;ftemp<=not ftemp;end if ;end if;fout<=ftemp;end process;end a;(2)仿真波形图如下:分析说明:根据 clk=2*num*fout,将1kHz的时钟信号经过千分频为1Hz,作为计时模块的时钟信号,成为秒时钟信号。
3.计时器模块:(1)VHDL描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jishi isport(clk,clr:in std_logic;sec1,sec0,min1,min0,h1,h0:out std_logic_vector(3 downto 0);sethour,setmin:in std_logic);end jishi;architecture one of jishi issignal co1,co2,comin,cohour,enmin,enhour:std_logic;beginprocess(clk,clr,setmin) --秒计时及分调整variable sectemp0,sectemp1:std_logic_vector(3 downto 0);beginif clr='1'thensectemp1:="0000";sectemp0:="0000";elsif clk'event and clk='1' thenif sectemp1="0101" and sectemp0="1001" thenco1<='1';sectemp0:="0000";sectemp1:="0000";elsif sectemp0<"1001" thensectemp0:=sectemp0+1;co1<='0';elsesectemp0:="0000";if sectemp1<"0101" thensectemp1:=sectemp1+1;elsesectemp1:="0000";end if;end if;end if;comin<=(clk and setmin);enmin<=(co1 or comin);sec1<=sectemp1;sec0<=sectemp0;end process;process(clr,enmin,sethour) --分计时及时调整variable mintemp0,mintemp1:std_logic_vector(3 downto 0);beginif clr='1' thenmintemp1:="0000";mintemp0:="0000";elsif enmin'event and enmin='1' thenif mintemp1="0101" and mintemp0="1001" thenco2<='1';mintemp0:="0000";mintemp1:="0000";elsif mintemp0<"1001" thenmintemp0:=mintemp0+1;co2<='0';elsemintemp0:="0000";if mintemp1<"0101" thenmintemp1:=mintemp1+1;elsemintemp1:="0000";end if;end if;end if;cohour<=(clk and sethour);enhour<=(co2 or cohour);min1<=mintemp1;min0<=mintemp0;end process;process(clr,enhour) --时计时variable htemp0,htemp1:std_logic_vector(3 downto 0);beginif clr='1' thenhtemp1:="0000";htemp0:="0000";elsif enhour'event and enhour='1' thenif htemp1="0010" and htemp0="0011" thenhtemp1:="0000";htemp0:="0000";elsif htemp0<"1001" thenhtemp0:=htemp0+1;elsehtemp1:=htemp1+1;htemp0:="0000";end if;end if;h1<=htemp1;h0<=htemp0;end process;end one;(2)仿真波形图如下:分析说明:setmin,sethour 完成对时、分的调整,使电子钟的适用性更好。
由于是秒时钟信号clk,满足调整时、分的要求,所以无需其他脉冲信号。
分析说明:sec0、sec1分别为秒计时的个位和十位,min0、min1分别为分计时的个位和十位,h0、和h1分别为时计时的个位和十位,给秒信号,计时模块从00:00:00计时到23:59:59后又清零为00:00:00,完成了时钟的计时。
3.扫描显示模块:(6位7段共阴数码管)(1)VHDL描述:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity scanselect isport(clk:in std_logic;sec1,sec0,min1,min0,h1,h0:in std_logic_vector(3 downto 0);duan:out std_logic_vector(6 downto 0);wei:out std_logic_vector(5 downto 0));end scanselect;architecture fun of scanselect issignal count:std_logic_vector(2 downto 0);signal dout:std_logic_vector(3 downto 0);signal seltemp:std_logic_vector(5 downto 0);beginwei<=seltemp;process(clk)beginif(clk'event and clk='1') thenif(count>="110") thencount<="001";elsecount<=count+1;end if;end if;case count iswhen"001"=>dout<=sec0;seltemp<="111110"; --选中秒个位数码管when"010"=>dout<=sec1;seltemp<="111101"; --选中秒十位数码管when"011"=>dout<=min0;seltemp<="111011"; --选中分个位数码管when"100"=>dout<=min1;seltemp<="110111"; --选中分十位数码管when"101"=>dout<=h0;seltemp<="101111"; --选中时个位数码管when others=>dout<=h1;seltemp<="011111"; --选中时十位数码管end case;case dout iswhen "0000"=>duan<="0111111"; --显示数字0when "0001"=>duan<="0000110"; --显示数字1when "0010"=>duan<="1011011"; --显示数字2when "0011"=>duan<="1001111"; --显示数字3when "0100"=>duan<="1100110"; --显示数字4when "0101"=>duan<="1101101"; --显示数字5when "0110"=>duan<="1111101"; --显示数字6when "0111"=>duan<="0100111"; --显示数字7when "1000"=>duan<="1111111"; --显示数字8when others=>duan<="1101111"; --显示数字9end case;end process;end fun;(2)仿真波形图如下:分析说明:该扫描显示模块的位输出选通一个数码管,段输出按要求点亮数码管的相应段,显示需要的数字,时钟信号是1kHz的,满足数码管的驱动要求。