基于VHDL语言的EDA实验报告(附源码)
VHDL语言设计信号发生器实验报告
实验四用VHDL设计多功能信号发生器一、设计任务基于《VHDL语言》,通过给定的仪器(EDA6000试验箱)设计一个多功能信号发生器,要求:(1)能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形(选作);(2)输出信号的频率范围为100Hz~200KHz,且输出频率可以调节;(3)具有显示输出波形、频率的功能。
(选作)二、系统顶层框图弦波的数字幅度信息,每个查找表的地址对应正(余)弦波幅度信号,同时输出到数模转换器(DAC)输入端,DAC输出的模拟信号经过低通滤波器(LPF),可以得到一个频谱纯净的正(余)弦波。
二、设计步骤用VHDL语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。
将频率控制、分频、三角波、正弦波、方波发生邓各个模块分别用VHDL语言编程为一个子程序,并把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框图所示。
通过按键1到按键8控制频率调节f〔7...0〕,用按键6、按键7、按键8控制dlt 、sin 、sqr 波形选通,最后把八位输出接DAC0832通过D/A 转换,从示波器上就能看到波形输出。
按下不同的按键输出不同的波形及频率。
三、系统设计(1)数控分频器模块在时钟的作用下,通过预置分频数DIN ,来改变输出频率。
假如分频系数为N ,波形存储模块存储一个周期的波形,实验里按照一个周期波形采样64个点存储在波形存储模块里。
则输出频率N f f clkout .64=(2).数据存储模块 (存储波形数据)数据存储模块主要存的是正弦波、三角波、锯齿波等一个周期的采样点。
三角波模块可设计一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为0时,当检测到时钟的上升沿进行加同一个数操作;为1时,进行减同一个数操作。
DA 转换采用的DA0832,输入有8个数据端,范围是0到255;而且设置64个时钟周期为一个三角波周期,所有每次加、减为8.锯齿波的存储数据与三角波类似。
EDA实验报告 (4)
实验四VHDL组合逻辑电路设计
一实验目的:
在学习了VHDL语言的语句,语法以及利用VHDL语言设计逻辑电路的基本方法之后,进行本次试验。
通过本次试验,使学生了解常见组合逻辑电路的VHDL描述,并且通过仿真,深入了解一种组合逻辑电路的功能和特性。
通过编辑VHDL程序熟悉VHDL 语言结构和词法元素的规则,了解常见的语法错误,学习利用QUARTUSII文本编辑器对VHDL语言程序进行编译,调试,并利用波形编辑器进行逻辑关系验证。
二实验内容:
本实验是一个设计型实验,利用所学VHDL语言,设计实现8421BCD码十进制转换。
通过本次试验,使学生能够熟练使用VHDL语言描述设计简单的组合逻辑电路。
进一步掌握VHDL描述的结构以及语法规则。
三实验仪器:
1.PC机一台
2.QUARTUSII软件
3.EDA实验箱
四实验原理:
8421BCD码—十进制转换的逻辑关系如下表所示。
输入输出
0000 1111111110
0001 1111111101
0010 1111111011
0011 1111110111
0100 1111101111
0101 1111011111
0110 1110111111
0111 1101111111
1000 1011111111
1001 0111111111
五实验步骤:
1.编译得到如图4.1所示。
图4.1 2.仿真得到如4.2所示波形。
图4.2
六实验总结。
通过本次试验,加深了我对常见组合逻辑电路的VHDL描述的了解,并且通过仿真,深入了解一种组合逻辑电路的功能和特性。
EDA实验报告
实验一:QUARTUS II 软件使用及组合电路设计仿真实验目得:学习QUARTUS II 软件得使用,掌握软件工程得建立,VHDL源文件得设计与波形仿真等基本内容。
实验内容:1.四选一多路选择器得设计基本功能及原理:选择器常用于信号得切换,四选一选择器常用于信号得切换,四选一选择器可以用于4路信号得切换。
四选一选择器有四个输入端a,b,c,d,两个信号选择端s(0)与s(1)及一个信号输出端y。
当s输入不同得选择信号时,就可以使a,b,c,d中某一个相应得输入信号与输出y端接通。
逻辑符号如下:程序设计:软件编译:在编辑器中输入并保存了以上四选一选择器得VHDL源程序后就可以对它进行编译了,编译得最终目得就是为了生成可以进行仿真、定时分析及下载到可编程器件得相关文件。
仿真分析:仿真结果如下图所示分析:由仿真图可以得到以下结论:当s=0(00)时y=a;当s=1(01)时y=b;当 s=2(10)时y=c;当s=3(11)时y=d。
符合我们最开始设想得功能设计,这说明源程序正确。
2.七段译码器程序设计基本功能及原理:七段译码器就是用来显示数字得,7段数码就是纯组合电路,通常得小规模专用IC,如74或4000系列得器件只能作十进制BCD码译码,然而数字系统中得数据处理与运算都就是2进制得,所以输出表达都就是16进制得,为了满足16进制数得译码显示,最方便得方法就就是利用VHDL译码程序在FPGA或CPLD中实现。
本项实验很容易实现这一目得。
输出信号得7位分别接到数码管得7个段,本实验中用得数码管为共阳极得,接有低电平得段发亮。
数码管得图形如下七段译码器得逻辑符号:程序设计:软件编译:在编辑器中输入并保存了以上七段译码器得VHDL源程序后就可以对它进行编译了,编译得最终目得就是为了生成可以进行仿真、定时分析及下载到可编程器件得相关文件。
仿真分析:仿真结果如下图所示:分析:由仿真得结果可以得到以下结论:当a=0(0000)时led7=1000000 此时数码管显示0;当a=1(0001)时led7=1111001 此时数码管显示1;当a=2(0010)时led7=0100100此时数码管显示2;当a=3(0011)时led7=0110000此时数码管显示3;当a=4(0100)时led7=0011001此时数码管显示4; 当a=5(0101)时led7=0010010此时数码管显示5; 当a=6(0110)时led7=0000010此时数码管显示6;当a=7(0111)时led7=1111000 此时数码管显示7; 当a=8(1000)时led7=0000000 此时数码管显示8; 当a=9(1001)时led7=0010000 此时数码管显示9;当a=10(1010)时led7=0001000 此时数码管显示A;当a=11(1011)时led7=0000011 此时数码管显示B;当a=12(1100)时led7=1000110 此时数码管显示C;当a=13(1101)时led7=0100001此时数码管显示D;当a=14(1110)时led7=0000110此时数码管显示E;当a=15(1111)时led7=0001110 此时数码管显示F;这完全符合我们最开始得功能设计,所以可以说明源VHDL程序就是正确得。
EDA实验报告
实验一:QUARTUS II 软件使用及组合电路设计仿真页脚内容1实验目的:学习QUARTUS II 软件的使用,掌握软件工程的建立,VHDL源文件的设计和波形仿真等基本内容。
实验内容:1.四选一多路选择器的设计基本功能及原理:选择器常用于信号的切换,四选一选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。
四选一选择器有四个输入端a,b,c,d,两个信号选择端s(0)和s(1)及一个信号输出端y。
当s输入不同的选择信号时,就可以使a,b,c,d中某一个相应的输入信号与输出y端接通。
逻辑符号如下:页脚内容2程序设计:软件编译:在编辑器中输入并保存了以上四选一选择器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示页脚内容3分析:由仿真图可以得到以下结论:当s=0(00)时y=a;当s=1(01)时y=b;当s=2(10)时y=c;当s=3(11)时y=d。
符合我们最开始设想的功能设计,这说明源程序正确。
2.七段译码器程序设计基本功能及原理:七段译码器是用来显示数字的,7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD 中实现。
本项实验很容易实现这一目的。
输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。
数码管的图形如下页脚内容4七段译码器的逻辑符号:程序设计:页脚内容5软件编译:在编辑器中输入并保存了以上七段译码器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示:页脚内容6分析:由仿真的结果可以得到以下结论:当a=0(0000)时led7=1000000 此时数码管显示0;当a=1(0001)时led7=1111001 此时数码管显示1;当a=2(0010)时led7=0100100 此时数码管显示2;当a=3(0011)时led7=0110000 此时数码管显示3;当a=4(0100)时led7=0011001 此时数码管显示4;当a=5(0101)时led7=0010010 此时数码管显示5;当a=6(0110)时led7=0000010 此时数码管显示6;当a=7(0111)时led7=1111000 此时数码管显示7;当a=8(1000)时led7=0000000 此时数码管显示8;页脚内容7当a=9(1001)时led7=0010000 此时数码管显示9;当a=10(1010)时led7=0001000 此时数码管显示A;当a=11(1011)时led7=0000011 此时数码管显示B;当a=12(1100)时led7=1000110 此时数码管显示C;当a=13(1101)时led7=0100001 此时数码管显示D;当a=14(1110)时led7=0000110 此时数码管显示E;当a=15(1111)时led7=0001110 此时数码管显示F;这完全符合我们最开始的功能设计,所以可以说明源VHDL程序是正确的。
基于VHDL的交通灯设计(EDA课程设计报告)!!
EDA课程设计实验报告交通信号控制器的VHDL的设计一、设计任务及要求:设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。
要求:(1)交通灯从绿变红时,有4秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;(4)在任意时间,显示每个状态到该状态结束所需的时间。
支干道主干道图1 路口交通管理示意图表1 交通信号灯的4种状态设计要求:(1)采用VHDL语言编写程序,并在QUARTUSII工具平台中进行仿真,下载到EDA实验箱进行验证。
(2)编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。
二设计原理1、设计目的:学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制2’设计说明(1)第一模块:clk时钟秒脉冲发生电路在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。
因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
模块说明:系统输入信号:Clk: 由外接信号发生器提供256的时钟信号;系统输出信号:full:产生每秒一个脉冲的信号;(2)第二模块:计数秒数选择电路计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。
模块说明:系统输入:full: 接收由clk电路的提供的1hz的时钟脉冲信号;系统输出信号:tm:产生显示电路状态转换信号tl:倒计数值秒数个位变化控制信号th:倒计数值秒数十位变化控制信号(3)第三模块:红绿灯状态转换电路本电路负责红绿灯的转换。
模块说明:系统输入信号:full: 接收由clk电路的提供的1hz的时钟脉冲信号;tm: 接收计数秒数选择电路状态转换信号;系统输出信号:comb_out: 负责红绿灯的状态显示。
基于VHDL语言的EDA设计——交通灯功能设计
北京XX大学《数字电路逻辑设计》实训报告基于VHDL语言的EDA设计——交通灯控制系统课程名称:数字电路逻辑设计课程实训学院:信息学院专业:电子信息工程姓名:班级:200908030301学号:2009080303132 2009080303101指导教师:成绩:2011年12 月22日目录目录 ................................................................................................................................................ - 1 - 概述 .. (1)第一章交通灯控制系统工程设计要求 (2)1、基础功能要求 (2)2、拓展功能要求 (2)第二章基础功能模块电路设计 (3)1、南北方向控制模块设计 (3)2、东西方向控制模块设计 (5)3、顶层设计 (8)第三章电路基础功能时序仿真验证 (9)1、南北方向控制模块功能仿真验证 (9)2、东西方向控制模块功能仿真验证 (9)3、顶层设计整体功能仿真验证 (10)第四章电路拓展功能设计 (11)1、“左转向”指示灯功能设计 (11)2、“左转向”指示功能设计 (12)附录 (13)附录1-小组成员与成员分工 (13)附录2-参考资料 (13)概述1、EDA技术的概念EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC 版图或PCB版图的整个过程的计算机上自动处理完成。
EDA实验报告:基于VHDL语言的交通灯控制系统设计与实现
图为k1=0时的输出状态s1,输出恒为011110。即亮灯为R1,y2。保持时间1S。
(k2=0)
上图为k2=0时的输出状态s2,输出恒为101011。即亮灯为G1,R2。保持时间2S。
(k3=0)
上图为k3=0时的输出状态s3,输出恒为110011。即亮灯为R1,G2。保持时间1S。
四、小结及心得体会
else
if counter<5 then
next_state<=s3;
else
next_state<=s0;
end if;
end if;
end if;
end if;
end if;
end case;
end process;
ouput:process(current_state)
begin ——显示程序
begin
u1: jiaotongdeng port map(
clk=>clki,
k0=>k0,
k1=>k1,
k2=>k2,
k3=>k3,
r1=>r1,r2=>r2,g1=>g1,g2=>g2,y1=>y1,y2=>y2
);
u2: div port map(clk=>clk1,clk_out=>clki);
end if;
end if;
end if;
when s3=>
if k0='0' then
next_state<=s0;
else
if k1='0' then
next_state<=s1;
EDA实验报告
EDA实验报告EDA(VHDL编程)实验报告一、引言EDA (Electronic Design Automation) 是一种用于电子设计和验证的自动化工具。
VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述和建模数字系统。
本实验旨在使用VHDL编程并使用EDA工具进行设计和验证。
二、实验目的1.理解并熟悉VHDL编程2.学会使用EDA工具进行设计和验证3.实践数字系统的建模和仿真三、实验过程1.VHDL编程根据实验要求,我们使用VHDL编程来实现一个4位2选1多路器。
首先,我们定义输入端口和输出端口,并声明所需的信号和变量。
然后,我们编写组合逻辑和时序逻辑以实现所需的功能。
最后,我们将实例化该多路器并指定其输入和输出端口。
2.EDA工具设计和验证我们选择了 Xilinx ISE Design Suite 作为我们的 EDA 工具。
首先,我们创建一个新的项目并选择相应的 FPGA 芯片。
然后,我们添加我们的VHDL 设计文件到项目中,并进行综合、布局和路由。
最后,我们使用仿真工具验证我们的设计。
四、实验结果经过实验,我们成功地编写并实例化了一个4位2选1多路器。
我们使用 Xilinx ISE Design Suite 进行综合、布局和路由,并成功验证了我们的设计。
五、实验总结通过本实验,我们掌握了VHDL编程和EDA工具的使用。
我们学会了使用VHDL描述数字系统,并使用EDA工具进行设计和验证。
这些技能对于电子设计和验证非常重要,并将有助于我们更好地理解和应用数字系统的原理和方法。
在实验过程中,我们也遇到了一些困难和挑战。
例如,我们可能需要更深入地了解VHDL编程的语法和方法,以及如何使用EDA工具的高级功能。
此外,我们还需要更多的实践来提高我们的设计和仿真技能。
总之,本实验有助于我们深入学习和理解数字系统的设计和验证。
通过实践和使用EDA工具,我们能够更好地应用所学知识,提高我们的设计和验证能力。
EDA实验七八实验报告(1)
实验七序列检测器的VHDL设计(1)实验目的:用状态机实现序列检测器的设计,了解一般状态机的设计与应用。
(2)实验原理:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出 1,否则输出 0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
书上P168例5-11 描述的电路完成对序列数”11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出”A”,否则仍然输出”B”。
(3)实验内容 1:用VHDL状态机设计一个8位序列信号检测器。
实验程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCHK ISPORT (DIN,CLK,CLR: IN STD_LOGIC;AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY SCHK;ARCHITECTURE ONE OF SCHK ISSIGNAL Q : INTEGER RANGE 0 TO 8;SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIND<="11100101";PROCESS(CLK,CLR)BEGINIF CLR='1' THEN Q<=0;ELSIF CLK'EVENT AND CLK='1' THENCASE Q ISWHEN 0=> IF DIN=D(7) THEN Q<=1; ELSE Q<=0; END IF;WHEN 1=> IF DIN=D(6) THEN Q<=2; ELSE Q<=0; END IF;WHEN 2=> IF DIN=D(5) THEN Q<=3; ELSE Q<=0; END IF;WHEN 3=> IF DIN=D(4) THEN Q<=4; ELSE Q<=0; END IF;WHEN 4=> IF DIN=D(3) THEN Q<=5; ELSE Q<=0; END IF;WHEN 5=> IF DIN=D(2) THEN Q<=6; ELSE Q<=0; END IF;WHEN 6=> IF DIN=D(1) THEN Q<=7; ELSE Q<=0; END IF;WHEN 7=> IF DIN=D(0) THEN Q<=8; ELSE Q<=0; END IF;WHEN OTHERS=> Q<=0;END CASE;END IF;END PROCESS;PROCESS(Q)BEGINIF Q=8 THEN AB<="1010";ELSE AB<="1011";END IF;END PROCESS;END ARCHITECTURE ONE;实验步骤如下:1 将源程序以SCHK.vhd的形式存入D盘名为liulin的文件夹中2 全程编译3 时序仿真4 引脚锁定和下载引脚锁定如下:CLR-PIN34;CLK-PIN32;DIN- PIN33;AB[0]- PIN77、 AB[1]- PIN78、AB[2]- PIN83、 AB[3]- PIN84;5 实际测试时序仿真波形如下图:实验分析:选择电路模式 No.8 。
EDA秒表设计 实验报告
EDA课程设计报告——基于VHDL语言的秒表设计课程名称:EDA技术院系:地球物理及信息工程学院专业班级:电子信息工程08级2班学生姓名:学号:指导老师:完成时间:2011年5月18日秒表设计一. 设计要求利用EDA实验箱,通过VHDL语言进行编程,设计一个简单的秒表,并用EDA实验箱进行实现,具体设计要求如下:(1)有使能、暂停、继续、秒表计数功能;(2)带有异步复位功能;(3)显示分、秒信息,若需要,显示秒表信息。
二. 设计的作用、目的在本次设计中,可以简单的了解EDA技术的应用以及VHDL语言编写的方法。
通过设计一个秒表,可以掌握用VHDL设计多位加法计数器的方法,尤其是调整时钟使得每过一秒就改变一个数,达到设计的要求。
三. 设计的具体实现1.系统概述本次系统设计主要分三个部分,一是通过VHDL语言设计一个八位的加法计数器,来实现秒表的计时功能;二是通过调整时钟使秒表计数为每秒改变一个数;三是加入一些控制按键,实现使能、暂停、继续等功能。
2.程序具体设计秒表显示共有6位,两位显示分,两位显示秒,十分秒和百分秒各一位。
设计时使用一个计数器,随着时钟上升沿的到来循环计数,每计数一次,百分秒位加一,通过百分秒位满十进位来控制十分位的计数,十分位满十进位,依次类推,实现秒表计数。
为实现秒位的计时精确,百秒位必须以0.01秒的时间间隔计数,即时钟的频率是100Hz。
为此,本设计采用3MHz的时钟频率通过分频得到100Hz的时钟频率,再送给控制时钟以得到比较精确的CLK信号。
具体程序设计见附录。
引脚定义如下:其中,时钟信号CLK为3MHz的时钟频率,分频后得到的时钟为CLK2,输出引脚CLK2和输入引脚CLK2在外部相连,实现将分频后的时钟送入。
3.调试应用MAX+plus II软件编译调试实验控制程序, 仿真运行结果如下:(1)给时钟后,实现开始功能:开始键按下(STA=‘1’)后,秒表计数开始。
(2)给时钟后,实现暂停功能:从上图可以看出暂停键按下后(POS=‘1’),输出(CQ)保持不变,直到暂停键再次按下(POS=‘0’),输出才继续计数,从而实现了暂停的功能。
eda实验报告1
EDA实验报告1——异步复位同步加载十进制加法计数器一、实验目的(1)、进一步熟悉和掌握Quartus II软件的各模块功能和使用方法;(2)、加深对VHDL语言的了解,熟悉VHDL 语言的语法特点,深刻了解Quartus II仿真中出现的各种问题并能加以解决。
二、实验要求(1)、采用文本输入法设计异步复位同步加载十进制加法计数器。
(2)、编写VHDL源程序,得出正确的仿真波形,并在实验开发系统上进行硬件测试。
三、实验原理异步复位是指复位信号有效时,直接将计数器的状态清零。
在本设计中,通过VHDL来设计一个异步复位同步加载十进制加法计数器。
异步复位同步加载十进制加法计数器有5个输入CLK,RST,EN,LOAD,DATA,2个输出DOUT,COUT。
当时钟信号CLK、复位信号RST、时钟使能信号EN或加载信号LOAD 中的任一位信号发生变化,都将启动进程语句PROCESS。
此时如果RST为‘1’,则看是否有时钟的上升沿;如果此时有CLK信号,且又测得EN=‘1’,接下来就是判断加载控制信号LOAD的电平。
如果LOAD为低电平,则允许将输入口的4位加载数据置入计数寄存器中,以便计数器在此数基础上累加计数。
如果LOAD为高电平,则允许计数器计数;此时若满足计数值小于9,即Q<9计数器将正常计数,即执行语句“Q:=Q+1;”否则将计数器清零。
但如果测得EN=’0’,则跳出IF语句,是Q保持原值,并将计数器向端口输出:“DOUT<=Q;”。
四、实验步骤1、新建一个文件夹ch3.20。
2、输入源程序。
打开Quartus II,做以下步骤,如下:图1—选择文本编辑编辑程序并存盘,存盘文件与实体名一致:图2—存盘好的源程序3、编译,红色光标所指即为Compilation命令:图3—选择编译器编译之后生成的报告:图4—编译成功后的报告4、生成RTL寄存器:选中Tools:图5—选择Tools接着鼠标指向Netlist viewer的第一项RTL viewer。
EDA实验报告
实验一:QUARTUS II 软件使用及组合电路设计仿真实验目的:学习QUARTUS II 软件的使用,掌握软件工程的建立,VHDL 源文件的设计和波形仿真等基本内容。
实验内容:1.四选一多路选择器的设计基本功能及原理:选择器常用于信号的切换,四选一选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。
四选一选择器有四个输入端a,b,c,d,两个信号选择端s(0)和s(1)及一个信号输出端y。
当s输入不同的选择信号时,就可以使a,b,c,d中某一个相应的输入信号与输出y端接通。
逻辑符号如下:程序设计:软件编译:在编辑器中输入并保存了以上四选一选择器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示分析:由仿真图可以得到以下结论:当s=0(00)时y=a;当s=1(01)时y=b;当 s=2(10)时y=c;当s=3(11)时y=d。
符合我们最开始设想的功能设计,这说明源程序正确。
2.七段译码器程序设计基本功能及原理:七段译码器是用来显示数字的,7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。
本项实验很容易实现这一目的。
输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。
数码管的图形如下七段译码器的逻辑符号:程序设计:软件编译:在编辑器中输入并保存了以上七段译码器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示:分析:由仿真的结果可以得到以下结论:当a=0(0000)时led7=1000000 此时数码管显示0;当a=1(0001)时led7=1111001 此时数码管显示1;当a=2(0010)时led7=0100100 此时数码管显示2;当a=3(0011)时led7=0110000 此时数码管显示3;当a=4(0100)时led7=0011001 此时数码管显示4;当a=5(0101)时led7=0010010 此时数码管显示5;当a=6(0110)时led7=0000010 此时数码管显示6;当a=7(0111)时led7=1111000 此时数码管显示7;当a=8(1000)时led7=0000000 此时数码管显示8;当a=9(1001)时led7=0010000 此时数码管显示9;当a=10(1010)时led7=0001000 此时数码管显示A;当a=11(1011)时led7=0000011 此时数码管显示B;当a=12(1100)时led7=1000110 此时数码管显示C;当a=13(1101)时led7=0100001 此时数码管显示D;当a=14(1110)时led7=0000110 此时数码管显示E;当a=15(1111)时led7=0001110 此时数码管显示F;这完全符合我们最开始的功能设计,所以可以说明源VHDL程序是正确的。
EDA实验报告
sum: out std_logic_vector(n downto 1);
cout: out std_logic
);
end siwei;
architecture Behavioral of siwei is
component quanjia
port (a,b,cin:in std_logic;
when"110"=>Y<="01000000";
when"111"=>Y<=;
whenothers=>null;
endcase;
elseY<=;
endif;
endprocess;
endBehavioral;
仿真结果:
2. 60进制计数器
实验程序:
library IEEE;
use Uncomment the following lines to use the declarations that are
仿真结果:
实验二、四位全加器和8位移位寄存器设计实验
1、实验目的
1)学习了解加法器工作原理。
2)学习用VHDL语言设计全加器的设计方法。
3)学习使用元件例化的方法设计多位加法器。
4)了解移位寄存器的工作原理
5)学习移位寄存器设计方法
2、实验内容
1)用VHDL语言设计全加器。
2)用元件例化方法设计一个四位二进制加法器。
验一:译码器及计数器设计实验
1、实验目的
1)复习二进制译码器的功能。
2)学习VHDL语言源程序输入方法。
3)学习VHDL语言源程序检查和修改。
EDA(VHDL编程)实验报告
2008年EDA(VHDL编程)实验报告本实验要求用VHDL语言实现基础篇实验部的实验三、四、五。
在编程过程我运用了if 语句,case语句及元件例化语句等主要方式实现了相关逻辑功能的实现。
通过本次实验让我加深了对电子设计自动化的实际认识。
巩固了软件MAX+plus II的基本使用方法,进一步认识了软件编译及仿真的原理及器件下载等基本内容自身的实验能力和实验水平有所提高。
实验三触发器功能模拟一、实验目的:1、掌握触发器功能的测试方法。
2、掌握基本RS触发器的组成及工作原理。
3、掌握集成JK触发器和逻辑功能及触发方式。
4、掌握几种主要触发器之间相互转换的方法。
5、通过实验,体会CPLD芯片的高集成度和多I/O口。
二、硬件要求:主芯片:EP1K10TC100—3,时钟源,按键开关,拨码开关,LED灯。
三、实验内容:将基本RS触发器,同步RS触发器,集成J-K触发器,D触发器同时集成在一个CPLD 芯片中模拟其功能,并研究其相互转化的方法。
实验的具体实现要连线测试。
四、实验原理图图2—3—1五、程序实现:library ieee;use ieee.std_logic_1164.all;entity test1 isport(j,k,clk,d,sd,rd,sd2,rd2: in std_logic;nqjk,qjk,nqrs,qrs,qrs2,nqrs2,qd,nqd: buffer std_logic);end entity test1;architecture one of test1 issignal q0,q1,q2,q3,q4,q5: std_logic; 定义信号作为中间连线beginprocess(clk,sd,rd)beginq4<=not(nqrs and sd);q5<=not(qrs and rd);if clk'event and clk='1' then 判断上升沿if (sd and rd)='1' then sd和rd都为1这时触发器q0<=(j and nqjk) or ((not k) and qjk); 正常工作状态,按激励公式q1<=d; 编写程序q2<=not d;q3<=(rd2 and (not qrs2)) or sd2;elsif (sd xor rd)='1' then 此时有清零信号或者是置1信号时分析当q0<=rd; 它是sd=0,rd=1时q0,q1,q3都置1所以与rd信号一样q1<=rd; 当sd=1,rd=0时q0,q1,q3都置0所以仍与rd信号一样q3<=rd; 所以两种情况下只需如左边程序赋值即可end if;end if;end process;qjk<=q0;nqjk<=not q0;qd<=q1;nqd<=q2;qrs2<=q3;nqrs2<=not q3;qrs<=q4;nqrs<=q5;end architecture one;在图中的D触发器和jk触发器的PRN和CLRN只对低电平有效当PRN=0则输出置1当CLRN=0则输出为0,且两则不能同时为0.下图为编译结果六、实验报告填下述表一,表二,表三,表四。
EDA实验报告
班级:姓名:学号:实验一 3-8译码器的实现一、实验目的及要求熟悉利用Quartus II 的VHDL输入方法设计简单组合电路,掌握case、if、when_else和信号选择语句的使用,并通过仿真,对比用以上四种语句实现3-8译码器所需要的资源情况(编译成功后弹出的Compilation Report)。
二、实验原理1、输出为低电平有效时,对应真值表为:2、输出为高电平有效时,对应真值表为:三、实验内容和步骤完成3-8译码器的设计,包括VHDL文本输入、编译、综合、适配、仿真(功能验证:本实验报告须重点分析)。
(1)CASE语句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; --使用类型转换函数,打开此程序包。
ENTITY dec3to8CASE ISport( DIN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT: OUT BIT_VECTOR(7 DOWNTO 0));END dec3to8CASE;ARCHITECTURE bhv OF dec3to8CASE ISBEGINPROCESS (DIN)BEGINCASE CONV_INTEGER(DIN) ISWHEN 0 => DOUT<="00000001";WHEN 1 => DOUT<="00000010";WHEN 2 => DOUT<="00000100";WHEN 3 => DOUT<="00001000";WHEN 4 => DOUT<="00010000";WHEN 5 => DOUT<="00100000";WHEN 6 => DOUT<="01000000";WHEN 7 => DOUT<="10000000";WHEN OTHERS => NULL;END CASE;END PROCESS;END bhv;(2)IF语句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dec3to8IF ISport( DIN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT: OUT BIT_VECTOR(7 DOWNTO 0));END dec3to8IF;ARCHITECTURE bhv OF dec3to8IF ISBEGINPROCESS (DIN)BEGINIF CONV_INTEGER(DIN)=0 THEN DOUT<="00000001";ELSIF CONV_INTEGER(DIN)=1 THEN DOUT<="00000010";ELSIF CONV_INTEGER(DIN)=2 THEN DOUT<="00000100";ELSIF CONV_INTEGER(DIN)=3 THEN DOUT<="00001000";ELSIF CONV_INTEGER(DIN)=4 THEN DOUT<="00010000";ELSIF CONV_INTEGER(DIN)=5 THEN DOUT<="00100000";ELSIF CONV_INTEGER(DIN)=6 THEN DOUT<="01000000";ELSIF CONV_INTEGER(DIN)=7 THEN DOUT<="10000000";END IF;END PROCESS;END bhv;(3)WHEN_ELSE语句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dec3to8WHENELSE ISport( DIN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT: OUT BIT_VECTOR(7 DOWNTO 0));END dec3to8WHENELSE;ARCHITECTURE bhv OF dec3to8WHENELSE ISBEGINDOUT<="00000001" WHEN DIN="000" ELSE"00000010" WHEN DIN="001" ELSE"00000100" WHEN DIN="010" ELSE"00001000" WHEN DIN="011" ELSE"00010000" WHEN DIN="100" ELSE"00100000" WHEN DIN="101" ELSE"01000000" WHEN DIN="110" ELSE"10000000" WHEN DIN="111";END bhv;(4)信号选择语句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dec3to8SEL ISport( DIN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT: OUT BIT_VECTOR(7 DOWNTO 0));END dec3to8SEL;ARCHITECTURE bhv OF dec3to8SEL ISBEGINWITH CONV_INTEGER(DIN) SELECTDOUT<="00000001" WHEN 0,"00000010" WHEN 1,"00000100" WHEN 2,"00001000" WHEN 3,"00010000" WHEN 4,"00100000" WHEN 5,"01000000" WHEN 6,"10000000" WHEN 7,UNAFFECTED WHEN OTHERS;END bhv;四、仿真分析和心得体会仿真分析:仿真波形图如下:其仿真结果和输出高电平有效的真值表相符。
EDA(VHDL)实验一 彩灯实验
实验一彩灯实验
一、实验目的
1 通过实验初步了解EDA的基本概念。
2 能理解VHDL语言实现硬件设计的思路。
3 能熟练掌握EDA开发软件的使用。
二、实验原理
在本实验中,8个彩灯共阴接地,阳极分别为FPGA的8个I/O相连,I/O输出变化的电平,来控制彩灯的点亮。
三、实验内容与步骤
1 打开Quartus II软件,依次点击菜单栏中的“File-Open Project”,打开EDA/LIGHT文件夹,在对话框中选择项目LIGHT,再点击打开即可;
2 双击项目管理器中的顶层项目LIGHTALL,顶层文件打开;
3 分别双击原理图表中PIN1HZ、light模块,打开即可看到源文件:
(1)light模块源程序
light模块方针波形如图所示:
程序分析:
(2)PIN1HZ模块源程序
PIN1HZ模块方针波形如图所示:
程序分析:
4 重新设置器件Cyclone EP1C6Q240C8 和配置芯片EPCS1;
5 根据配套的硬件资源分配表进行管脚分配,分配后的结果如图所示:
6 然后再编译一次;
7 下载程序到目标芯片。
四、实验现象
八个彩灯采用不同的模式被点亮。
五、思考题
试着改变程序,使得LED灯的切换速度发生变化。
只要改变PIN1HZ模块源程序的分频比,即可使得LED灯的切换速度发生变化。
例如,把50MHz分频为2Hz的程序如下:。
EDA实验报告
实验一 38译码器一、实验设计:用VHDL语言编写3/8译码器,编写之前首先要知道38译码器的编码原理。
真值表如下:二、运行结果:三、源代码如下:use IEEE.STD_LOGIC_1164.ALL;entity yimaqi isport(a:in std_logic_vector(2 downto 0);EN:in std_logic;y:out std_logic_vector(7 downto 0));end yimaqi;architecture dec_behave of yimaqi issignal sel:std_logic_vector(3 downto 0);beginsel<=a;with sel selecty<= "00000001" when "000","00000010" when "001","00000100" when "010","00001000" when "011","00010000" when "100","00100000" when "101","01000000" when "110","10000000" when "111","XXXXXXXX" when others;end dec_behave;四、心得体会:38译码器是做的第一个实验,开始的时候学会了如何运用Quartus II,熟悉了软件的运用后,由于38译码器较简单,所以做实验时没有什么错误。
实验二BCD七段显示译码器实验一、实验设计LED数码显示器是数字系统实验里面经常使用的一种显示器件,因为它经常显示的是十进制或十六进制的数,所以我们就要对实验里面所用到的二进制数进行译码,将它们转换成十进制的或是十六进制的数。
EDA技术实验报告
EDA技术实验报告实验⼀利⽤原理图输⼊法设计4位全加器⼀、实验⽬的:掌握利⽤原理图输⼊法设计简单组合电路的⽅法,掌握MAX+plusII 的层次化设计⽅法。
通过⼀个4位全加器的设计,熟悉⽤EDA 软件进⾏电路设计的详细流程。
⼆、实验原理:⼀个4位全加器可以由4个⼀位全加器构成,全加器的进位以串⾏⽅式实现,即将低位加法器的进位输出cout 与相邻的⾼位加法器的低位进位输⼊信号cin 相接。
1位全加器f-adder 由2个半加器h-adder 和⼀个或门按照下列电路来实现。
半加器h-adder 由与门、同或门和⾮门构成。
四位加法器由4个全加器构成三、实验内容:1. 熟悉QuartusII 软件界⾯,掌握利⽤原理图进⾏电路模块设计的⽅法。
QuartusII 设计流程见教材第五章:QuartusII 应⽤向导。
2.设计1位全加器原理图(1)⽣成⼀个新的图形⽂件(file->new->graphic editor )(2)按照给定的原理图输⼊逻辑门(symbol ->enter symbol)COCO 1S 2S 3S 4(4)为管脚和节点命名:在管脚上的PIN_NAME处双击⿏标左键,然后输⼊名字;选中需命名的线,然后输⼊名字。
(5)创建缺省(Default)符号:在File菜单中选择Create Symbol Files for Current File项,即可创建⼀个设计的符号,该符号可被⾼层设计调⽤。
3.利⽤层次化原理图⽅法设计4位全加器(1)⽣成新的空⽩原理图,作为4位全加器设计输⼊(2)利⽤已经⽣成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.4.新建波形⽂件(file->new->Other Files->Vector Waveform File),保存后进⾏仿真(Processing ->Start Simulation),对4位全加器进⾏时序仿真。
EDA与VHDL实验报告
EDA与VHDL实验专业:电子信息工程班级:120210成员:吕祎12021027张亮12024120一、3-8译码器的设计译码器:把输入的数码解出其对应的数码。
设计原理:先判断使能端口EN状态,当其满足高电平时,判断三个输入端口A2,A1,A0的状态来决定输出。
若使能端口为低电平则固定输出不受逻辑输出A2,A1,A0的影响。
使能有效时按照三个输入状态决定八个输出的状态。
二实验过程1 、创建新工程(1) 打开QuartusII软件,在主界面中执行FILE—>New project Wizard(2) 在向导的第一页设置工程文件夹demo,工程名称及顶层实体名称demo。
(3) 点击Next按钮,进入添加设计文件对话框(4)点击Next进入选择目标芯片对话框,ACEX1K系列EP1K30QC208-3 (5)点击Next进入EDA工具设置页面(6)在新建工程向导最后,QuartusII给出新建工程摘要信息,点击Finish完成向导。
2、程序设计输入(1)执行File-New…选中Design Files中的VHDL File后,点击OK,这时执行编译1 启动编译:执行菜单processing->start compilation。
当发现错误时会立即终止编译,并给出错误信息,双击错误名称,会自动定位到出错位置,以便修改错误。
2 完成编译:给出编译报告仿真1 、新建波形文件:执行File->NEW,选中Other Files中vector waveform file,点击OK新建空白文件,名位demo.vwf, 执行file->save as保存。
默认仿真时间1us.2 、添加输入、输出节点3、编辑输入信号波形通过波形编辑器左侧的信号设置工具栏,编辑输入波形。
当需要设定某段波形时,将其用鼠标拖黑,然后用工具栏中的按钮赋值。
对输入进行设置。
或左键选中A (此时设置工具箱相应选项才可选择),在设置工具栏选择C(累加计数),数据类型选择2进制(binary);选中EN(使能),设置为‘1’(高电平有效)信号波形编辑完成后保存。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA 实验报告——多功能电子钟姓名:张红义班级:10级电科五班学号:1008101143指导老师:贾树恒电子钟包括:主控模块,计时模块,闹钟模块,辅控模块,显示模块,蜂鸣器模块,分频器模块。
1.主控模块:主要功能:控制整个系统,输出现在的状态,以及按键信息。
源代码:libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entity mc isport(functionswitch,k,set,lightkey: in std_logic;chose21,setout: out std_logic;lightswitch:bufferstd_logic;modeout,kmodeout : out std_logic_vector(1 downto 0);setcs,setcm,setch,setas,setam,setah:outstd_logic);end mc;architecture work of mc issignalmode,kmode:std_logic_vector(1 downto 0);signal light,chose21buf:std_logic;signalsetcount:std_logic_vector(5 downto 0);beginprocess(functionswitch,k,set,lightkey)beginiffunctionswitch'event and functionswitch='1' thenmode<=mode+'1';end if;iflightkey'event and lightkey='1' thenlightswitch<=not lightswitch;end if;if mode="01" thenchose21buf<='0';else chose21buf<='1';end if;ifk'event and k='1' thenif mode="01" or mode="11" thenkmode<=kmode+'1';end if;end if;if set='1' thenif mode = "01" thenifkmode="01" then setcount<="000001";elsifkmode="10" thensetcount<="000010";elsifkmode="11" thensetcount<="000100";elsesetcount<="000000";end if;elsif mode = "11" thenifkmode="01" thensetcount<="001000";elsifkmode="10" thensetcount<="010000";elsifkmode="11" thensetcount<="100000";elsesetcount<="000000";end if;end if;end if;if set='0' thensetcount<="00000”;end if;setout<=set;modeout<=mode;kmodeout<=kmode;chose21<=chose21buf;setcs<=setcount(0);setcm<=setcount(1);setch<=setcount(2); setas<=setcount(3);setam<=setcount(4);setah<=setcount(5); end process;end work;仿真波形:2. 计时模块主要功能:记录时间,正常计时。
60进制libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entity count60 isport(clk ,clr :in std_logic;co : out std_logic;outh :out std_logic_vector(7 downto 4);outl :out std_logic_vector(3 downto 0));end count60 ;architecture work of count60 issignal bufh:std_logic_vector(7 downto 4);signal bufl:std_logic_vector(3 downto 0);beginprocess(clk)beginifclr='0' thenbufh<="0000";bufl<="0000";elsif(clk'event and clk='1')thenif(bufh="0101"and bufl="1001")then co<='1';bufh<="0000";bufl<="0000";elsif(bufl="1001")thenbufl<="0000";bufh<=bufh+1;elsebufl<=bufl+1;co<='0'; end if;end if;outh<=bufh;outl<=bufl;end process;end work;24进制libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entity count24 isport(clk :in std_logic; co: out std_logic;outh :out std_logic_vector(7 downto 4);outl :out std_logic_vector(3 downto 0));end count24 ;architecture a of count24 issignal bufh:std_logic_vector(7 downto 4);signal bufl:std_logic_vector(3 downto 0);beginprocess(clk)beginif(clk'event and clk='1')thenif(bufh="0010"and bufl="0011")thenco<='1';bufh<="0000";bufl<="0000";elsif(bufl="1001")thenbufl<="0000";bufh<=bufh+1;elsebufl<=bufl+1;co<='0';end if;end if;outh<=bufh;outl<=bufl;end process;end a;keyen.vhdlibraryieee;use ieee.std_logic_1164.all;entitykeyen isport(en, keyin:instd_logic;keyout: out std_logic);endkeyen;architecture work of keyen isbeginprocess(en,keyin)beginif en='1' then keyout<=keyin;elsekeyout<='0';end if;end process;end work;chose21.vhdlibraryieee;use ieee.std_logic_1164.all;entity chose21 isport(clk,add,chose : in std_logic;co : out std_logic);end chose21;architecture work of chose21 isbeginprocess(chose,clk,add)beginif chose='1' then co<=clk;elseco<=add;end if;end process;end work;3. 闹钟模块:主要功能记录闹钟时间信息,输出闹钟时间信息源代码:同上:keyen.vhdcount60.vhdcount24.vhd4. 辅控模块:主要功能处理显示,以及蜂鸣器的信号。
时钟输入与闹钟输入相比较,组成闹钟功能,以及整点报时功能。
源代码Ac.vhdlibraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity ac isport(clk,lightonoff:instd_logic;mode,kmode:instd_logic_vector(1 downto 0);csh,csl,cmh,cml,chh,chl,ash,asl,amh,aml,ahh,ahl:instd_logic_vector(3 downto 0);q0,q1,q2,q3,q4,q5,q6,q7:outstd_logic_vector(3 downto 0);lightswitch,sound512,sound1024,timeok:out std_logic);end ac;architecture work of ac issignal q0b,q1b,q2b,q3b,q4b,q5b,q6b,q7b: std_logic_vector(3 downto 0);beginprocess(chh,cmh,csh,ash,ahh,amh,chl,cml,csl,asl,ahl,aml,mode,km ode,clk)beginif mode="00" or mode="01" then --闪烁功能开始q0b<=csl;q1b<=csh;q2b<="1010";q3b<=cml;q4b<=cmh;q5b<="1010";q6b<=chl;q7b<=chh;elsif mode="10" or mode="11" then q0b<=asl;q1b<=ash;q2b<="1010";q3b<=aml;q4b<=amh;q5b<="1010";q6b<=ahl;q7b<=ahh;end if;ifclk ='1' thenif mode="00" or mode="10" then q0<=q0b;q1<=q1b;q2<=q2b;q3<=q3b;q4<=q4b;q5<=q5b;q6<=q6b;q7<=q7b;elsecasekmode iswhen "01" =>q0<="1111";q1<="1111";q2<=q2b;q3<=q3b;q4<=q4b;q5<=q5b;q6<=q6b;q7<=q7b;when "10" =>q0<=q0b;q1<=q1b;q2<=q2b;q3<="1111";q4<="1111";q5<=q5b;q6<=q6b;q7<=q7b;when "11" =>q0<=q0b;q1<=q1b;q2<=q2b;q3<=q3b;q4<=q4b;q5<=q5b;q6<="1111";q7<="1111";when others =>q0<="1111";q1<="1111";q2<="1111";q3<="1111";q4<="1111";q5<="1111";q6<="1111";q7<="1111";end case;end if;elseq0<=q0b;q1<=q1b;q2<=q2b;q3<=q3b;q4<=q4b;q5<=q5b;q6<=q6b;q7<=q7b;end if;--闪烁功能完毕--整点报时功能开始ifcmh="0101" and cml="1001" thenifcsh="0101" thenifcsl="0001" or csl="0010" or csl="0101" orcsl="0111" thensound512<='1' ;elsifcsl="1001" thensound1024<='1';elsesound512<='0';sound1024<='0';end if;end if;end if;--正点报时功能完--显示开关功能开始iflightonoff='1' thenlightswitch<='0';elselightswitch<='1';end if;--显示开关功能完毕--闹钟功能开始ifchh=ahh and cmh=amh and chl=ahl and cml=aml then timeok<='1';elsetimeok<='0';end if;--闹钟功能完毕end process;end work;5. 显示模块:主要功能处理辅控传来的显示信号,在数码管上直接的显示数字。