vhdl实验手册

上传人:沈*** 文档编号:170029373 上传时间:2022-11-18 格式:DOC 页数:31 大小:853KB
返回 下载 相关 举报
vhdl实验手册_第1页
第1页 / 共31页
vhdl实验手册_第2页
第2页 / 共31页
vhdl实验手册_第3页
第3页 / 共31页
点击查看更多>>
资源描述
EDA实验指导书Electronic Design Automation 张 伟、郭顺京 编电工电子实验中心目 录实验一 七人表决器设计1实验二 计数器3实验三 多路选择器6实验四 8-3优先编码器的VHDL设计8实验五 七段数码显示译码器设计11实验六 扫描显示驱动电路设计13实验七 半加器的VHDL设计16实验八 全加器的VHDL设计18实验九 触发器的VHDL设计20实验十 多功能数字钟的VHDL设计23实验一 七人表决器设计一、实验任务及要求实验目的:学习VHDL的CASE语句应用及多层次设计方法。实验内容:参加表决者7人,同意者过半则表决通过。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、设计说明与提示 开关设置: JP1: K1-k8 L9-L16 其它 插上 插上 不插操作运行: K1K7代表七个表决者,同意时将开关设为高电平,否则置为低;表决通过时绿灯亮(L16),不通过则黄灯亮(L15)。程序设计提示 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY vote7 ISPORT(men: INstd_logic_vector(6 downto 0);pass,stop: buffer std_logic);END vote7;ARCHITECTURE behave OF vote7 ISBEGIN stop=not pass;PROCESS (men) variable temp:std_logic_vector(2 downto 0);BEGIN temp:=000; for i in 0 to 6 loop if(men(i)=1) then temp:=temp+1; else temp:=temp+0; end if; end loop; pass=temp(2);END PROCESS; END behave;四、实验报告要求实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。实验二 计数器一、实验任务及要求1、 设计一个带使能输入及同步清0的增1计数器,仿真波形图见图20-1,实验源程序名是counter1.vhd;2、 设计一个带使能输入及同步清0的增1/减1的8位计数器,仿真波形图见图20-2A和20-2B,实验源程序名是up-down.vhd。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、设计说明与提示图20-1 计数器2波形图 图20-2A 加减控制计数器波形图在用VHDL语言描述一个计数器时,如果使用了程序包ieee.std_logic_unsigned,则在描述计数器时就可以使用其中的函数“+”(递增计数)和“-”(递减计数)。假定设计对象是增1计数器并且计数器被说明为向量,则当所有位均为1时,计数器的下一状态将自动变成0。举例来说,假定计数器的值到达“111”是将停止,则在增1之前必须测试计数器的值。 图20-2B 加减控制计数器波形图如果计数器被说明为整数类型,则必须有上限值测试。否则,在计数顺值等于7,并且要执行增1操作时,模拟器将指出此时有错误发生。实验连线:实验输入信号有clk(时钟信号)、clr(复位信号)、en(使能控制输入信号),clk用CPLD/FPGA适配器板子上的时钟信号,接数字信号源的CLK5,频率调节到1Hz左右,clr、en接拨码开关,工作时clr为低电平,en为高电平;输出信号有Q0Q3,接LED灯。实验2输入信号有clk(时钟信号)、rst(复位信号)、en(使能控制输入信号)、up(加减控制输入信号),clk用CPLD/FPGA适配器板子上的时钟信号,接数字信号源的CLK5,频率调节到1Hz左右,rst、en、up接拨码开关,工作时rst和en为高电平,up为高电平时增计数,为低电平时减计数;输出信号有SUM0SUM2(代表输出数据)和COUT(代表进位或借位),都接LED灯。在做实验时,请注意仿真波形图中各个输入信号的有效电平。下面的例子是一个3位增1/减1计数器:当输入信号UP等于1 时计数器增1;当输入信号UP等于0时计数器减1。Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity up_down isPort(clk,rst,en,up:instd_logic;Sum:outstd_logic_vector(2 downto 0);Cout:outstd_logic);End;Architecture a of up_down isSignal count:std_logic_vector(2 downto 0);BeginProcess(clk,rst)BeginIf rst=0 thenCount0);Elsif rising_edge(clk) thenIf en=1 thenCase up isWhen 1 = countcount=count-1;End case;End if;End if;End process;Sum=count;Cout =1 when en=1 and (up=1 and count=7) or (up=0 and count=0) else 0;End;参考以上实例完成实验目的中所要求的3个计数器的设计。四、实验报告要求实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。实验三 多路选择器一、实验任务及要求实验目的:熟悉Quartus的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。实验内容:1、利用Quartus完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出图2-2所示的仿真波形。最后在实验系统上进行硬件测试,验证本项设计的功能。2、引脚锁定以及硬件下载测试。若选择目标器件是EP1C6,建议选实验电路模式5(附录图1),用键1(PIO0,引脚号为1)控制s0;用键2(PIO1,引脚号为2)控制s1;a3、a2和a1分别接clock5(引脚号为16)、clock0(引脚号为93)和clock2(引脚号为17);输出信号outy仍接扬声器spker(引脚号为129)。通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。最后进行编译、下载和硬件测试实验(通过选择键1、键2,控制s0、s1,可使扬声器输出不同音调)。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、设计说明与提示 系统顶层框图:图2-1 双2选1多路选择器2-2 mux21a功能时序波形程序设计提示 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ;END IF; END PROCESS;END ARCHITECTURE one ;四、实验报告要求实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。附加内容:根据本实验以上提出的各项实验内容和实验要求,设计1位全加器。首先用Quartus完成给出的全加器的设计,包括仿真和硬件测试。实验要求分别仿真测试底层硬件或门和半加器,最后完成顶层文件全加器的设计和测试,给出设计原程序,程序分析报告、仿真波形图及其分析报告。实验习题:以1位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。实验四 8-3优先编码器的VHDL设计一、实验的目的1、通过常见基本组合逻辑电路的设计,熟悉EDA设计流程。2、熟悉文本输入及仿真步骤。3、掌握VHDL设计实体的基本结构及文字规则。4、掌握组合逻辑电路的静态测试方法。5、理解硬件描述语言和具体电路的映射关系。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、实验内容1、实验原理:允许同时在几个输入端有输入信号,编码器按输入信号排定的优先顺序,只对同时输入的几个信号中优先权最高的一个进行编码。2、实验步骤:1)、创建工程。2)、新建文件夹。3)、输入正确的源程序,保存,编译。4)、波形仿真,分配引脚,编译。5)、下载到试验箱,进行功能验证。(原理图及仿真的波形界面在备注)8-3编码器如图8-1所示,其真值表如表8-1。图8-1 8-3编码器表8-1 8-3优先编码器真值表输入输出EIN0N1N2N3N4N5N6N7NA2NA1NA0NGSNEON1XXXXXXXX11111011111111111100XXXXXXX0000010XXXXXX01001010XXXXX011010010XXXX0111011010XXX01111100010XX011111101010X01111111100100111111111101实验源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ENCODER IS PORT( D:IN STD_LOGIC_VECTOR(0 TO 7); A:OUT STD_LOGIC_VECTOR(0 TO 2) );END ;ARCHITECTURE XIANI OF ENCODER ISBEGINPROCESS(D)BEGIN IF (D(7)=0)THEN A=111; ELSIF (D(6)=0)THEN A=110; ELSIF (D(5)=0)THEN A=101; ELSIF (D(4)=0)THEN A=100; ELSIF (D(3)=0)THEN A=011; ELSIF (D(2)=0)THEN A=010; ELSIF (D(1)=0)THEN A=001; ELSIF (D(0)=0)THEN A=000; ELSE A LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ; END ;四、实验报告要求实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。实验六 扫描显示驱动电路设计一、实验目的1、了解实验系统中8位八段数码管显示模块的工作原理;2、掌握计数器和地址发生器的VHDL描述方法;3、掌握LED数码管7段译码器的VHDL描述方法;4、掌握编码器的VHDL描述方法;5、设计标准扫描驱动电路模块,以备后面实验用。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、实验内容图9.1所示的是8位数码扫描显示电路,其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。其VHDL示例程序如程序10.1所示。图9.1 8位数码扫描显示电路图1、实验内容1:理解程序中各语句的含义,以及该例的整体功能。对该例进行编辑、编译、综合、适配、仿真,给出仿真波形。实验方式:若考虑小数点,SG的8个段分别与PIO49、PIO48、PIO42(高位在左)、BT的8个位分别与PIO34、PIO35、PIO41(高位在左);电路模式不限,引脚图参考附图11。将GW48EDA系统左下方的拨码开关全部向上拨,这时实验系统的8个数码管构成图10.1的电路结构,时钟CLK可选择clock0,通过跳线选择16384Hz信号。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。 2、实验内容2:修改例9.1的进程P1中的显示数据直接给出的方式,增加8个4位锁存器,作为显示数据缓冲器,使得所有8个显示数据都必须来自缓冲器。缓冲器中的数据可以通过不同方式锁入,如来自A/D采样的数据、来自分时锁入的数据、来自串行方式输入的数据,或来自单片机等。3、自行设定实验步骤和设计纪录方式,完成实验报告【例9.1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED IS PORT ( CLK : IN STD_LOGIC; SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -段控制信号输出 BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); -位控制信号输出END;ARCHITECTURE one OF SCAN_LED IS SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL A : INTEGER RANGE 0 TO 15;BEGINP1:PROCESS( CNT8 ) -编码器 BEGIN CASE CNT8 IS WHEN 000 = BT = 00000001 ; A BT = 00000010 ; A BT = 00000100 ; A BT = 00001000 ; A BT = 00010000 ; A BT = 00100000 ; A BT = 01000000 ; A BT = 10000000 ; A NULL ; END CASE ; END PROCESS P1;P2:PROCESS(CLK) -计数器 BEGIN IF CLKEVENT AND CLK = 1 THEN CNT8 SG SG SG SG SG SG SG SG SG SG SG SG SG SG SG SG NULL ; END CASE ; END PROCESS P3; END;例9.1是扫描显示的示例程序,其中clk是扫描时钟;SG为7段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT是位选控制信号,接图5-20中的8个选通信号:k1、k2、k8 。程序中CNT8是一个3位计数器,作扫描计数信号,由进程P2生成;进程P3是7段译码查表输出程序,与例5-18相同;进程P1是对8个数码管选通的扫描程序,例如当CNT8等于001 时,K2对应的数码管被选通,同时,A被赋值3,再由进程P3译码输出1001111,显示在数码管上即为“3”;当CNT8扫变时,将能在8个数码管上显示数据:13579BDF 。四、实验报告要求与思考题实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。1、字形编码的种类,即一个8段数码管可产生多少种字符,产生所有字符需多少根译码信号线?2、字符显示亮度和扫描频率的关系,且让人感觉不出光烁现象的最低扫描频率是多少?3、扫描显示和静态显示有什么差别?使用扫描显示有什么好处? 实验七 半加器的VHDL设计一、实验任务及要求设计并实验一个一位半加器实验原理:半加器(被加数)Ai(被加数)Bi(半加和)Hi(本位进位)Ci计算机中数的操作都是以二进制进位的,最基本的运算就是加法运算。按照进位是否加入,加法器分为半加器和全加器电路两种。计算机中的异或指令的功能就是求两个操作数各位的半加和。一位半加器有两个输入、输出,如图2-1。图2-1 一位半加器示意图 表2-1 半加器真值表输入输出BiAiHiCi0000011010101101一个半加大路的真值表如表2-1所示,根据真值表可得到半加器的函数表达式: 实验源程序文件名是half-adder.vhd。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、设计说明与提示半加器的两个输入所对应的管脚同两位拨码开关相连,两个输入管脚名为a、b;两个输出所对应的管脚同两位发光二极管相连,两个输出管脚名为 c0和s,其中c0表示进位, s表示相加结果。实验记录:状态输入正确输出实验结果BiAiHiCiHiCi10000201103101041101四、实验报告要求实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。实验八 全加器的VHDL设计一、实验任务及要求设计并实现一个一位全加器实验原理:计算机中的加法器一般就是全加器,它实现多位带进位加法。下面以一位全加器介绍。一位全加器有三个输入、两个输出,见图3-1。(被加数)Bi全加器(被加数)Ai(进位入)Ci-1(全加和)Si(进位出)Ci图3-1 一位全加器示意图图中的“进位入”Ci-1指的是低位的进位输出,“进位出”Ci即是本位的进位输出。一位全加器的真值表见表3-1。表3-1:输入输出Ci-1BiAiSiCi0000000110010100110110010101011100111111根据表3-1便可写出逻辑函数表达式:全加功能的硬件实现方法有多种,例如:可以把全加和看作是Ai与Bi的半加和Hi与进位输入Ci-1的半加和来实现。多位全加器就是在一位的原理上扩展而成的。集成电路全加器有7480、7481、7483等。设计内容:将两个四位的二进制数(A,B)和进位CARRY相加,输出一个四位的二进制数(S)和进位位(CO)。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、设计说明与提示一位全加器的三个输入所对应的管脚同三位拨码开关相连,三个输入端子是a、b、cin,分别代表 Ai、Bi、Ci-1;两个输出所对应的管脚同两位发光二极管相连,两个输出端子是c0、sum,分别代表Ci 、Si。实验记录:输入输出实验结果Ci-1BiAiSiCiSiCi0000000110010100110110010101011100111111四位全加器: K1K4分别对应输入二进制数a的高位到低位。 K5K8 分别对应输入二进制数b的高位到低位。 K9 进位CARRY。 L15L12 对应输出和S的高位到低位。 L16 显示进位信号。开关设置: jp1 K1-k8 L9-L16 其它 插上 插上 不插四、实验报告要求实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。实验九 触发器的VHDL设计一、实验的目的1、掌握触发器功能的测试方法。2、掌握基本RS触发器的组成及工作原理。3、掌握集成JK触发器和D触发器的逻辑功能及触发方式。4、掌握几种主要触发器之间相互转换的方法。5、通过实验、体会CPLD芯片的高集成度和多I/O口。二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、实验内容1、用VHDL语言设计基本RS触发器、同步RS触发器、J-K触发器、D触发器,并将这些触发器集成于一个电路(芯片)中(参考设计电路如图8.1所示),并研究其相互转换的方法。图8.1 触发器设计参考电路2、编译、仿真、管脚锁定和器件编成下载后进行硬件测试并纪录测试结果到下列各触发器的真值表中。表一:RS寄存器RdSdQNQ说 明01101100表二:RS 锁存器RSCLK1RdSdQnQn+1Qn-1说 明XXX10XXX01XXX00XX01100111011111011111111表三:D 触发器INPUTSOUTPUTSDCLK2RdSdQNQXX01XX10XX00X011X111011111表四:JK 触发器JKCLK1RdSdQnQn+1NQn+1XXX01XXX10XXX00XX011XX11100110111101111114、分别将JK触发器和D触发器接成T触发器,模拟其工作状态,并画出其波形图。5、自行设定实验步骤和设计纪录方式,完成实验报告四、实验报告要求与思考题实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。1、时序电路的设计与组合电路的设计有何差别?2、时序电路的同步设计和异步设计有何不同?3、异步设计的竞争冒险现象如何产生,应该如何克服竞争冒险现象?实验十 多功能数字钟的VHDL设计一、实验任务及要求1. 能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟、60秒钟的计数器显示。2. 能利用实验系统上的按键实现“校时”“校分”功能:(1) 按下“SA”键时,计时器迅速递增,并按24小时循环,计满23小时后在回00;(2) 按下“SB”键时,计分器迅速递增,并按59分钟循环,计满59分钟后在回00;但不向“时”进位;(3) 按下“SC”键时,秒清零;(4) 要求按下“SA”、“SB”或“SC”均不产生数字跳变(“SA”、“SB”、“SC”按键是有抖动的,必须对其消抖动处理)。3. 能利用扬声器做整点报时:(1) 当计时到达5950时开始报时,在5950、52、54、56、58鸣叫,鸣叫声频可为500Hz;(2) 到达5960时为最后一声整点报时,整点报时是频率可定为1KHz。 4. 用层次化设计方法设计该电路,用VHDL语言编写各个功能模块。5. 报时功能、闹时功能用功能仿真的方法验证,可通过观察有关波形确认电路设计是否正确。6. 完成电路设计后,用实验系统下载验证。 二、实验仪器计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱三、设计说明与提示 系统顶层框图:计数控制 模块 调时 调分 时间显示输出 秒清零报时控制 reset clk 蜂鸣器输出模块电路功能如下:1. 输出显示由秒计数器、分计数器、时计数器组成。2. 对“SA”、“SB”、“SC”按键是进行消抖动处理,1024hz采样;3. 输入时钟为2hz,用于调时间时时间的变化,经过2分频出1hz信号驱动计时电路;4. 前五声讯响功能报时电路由500Hz驱动,整点报时有1024hz驱动。5. 闹时电路模块也需要500Hz或1KHz音频信号以及来自秒计数器、分计数器和时计数器的输出信号作本电路的输入信号。程序设计提示 程序设计由两大模块组成:控制模块和计数模块;控制模块由control模块组成,计数模块由cdu60s,cdu60和cdu24组成分别为秒,分和时的计时显示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control isport ( clk ,clk1024,clk500,sa,sb,sc: in std_logic;clk 2hz; clk1024 1024hz; -clk5000 5000hz;sa,sb,sc:调时间按键q1 : in std_logic_vector(7 downto 0); 秒钟q2 : in std_logic_vector(7 downto 0); 分钟bee,clks,seta,setb,clrc: out std_logic); bee蜂明器输出,clks 1hz输出; seta,setb,clrc分别为sa,sb,sc的消抖输出,用于调时,调分清秒end control;architecture aa of control issignal count : std_logic_vector(1 downto 0); beginclk_label:PROCESS (clk)BEGINIF clkevent and clk=1 THEN count=count+1;END IF;END PROCESS clk_label;clk1024_label:PROCESS (clk1024)BEGINIF clk1024event and clk1024=1 THEN -1024频率采样对输入按键消抖seta=sa;setb=sb;clrc=sc;END IF;END PROCESS clk1024_label;clks=count(1); count为输入2hz时钟的2分频,响应clks为1hzbee= clk500 when q2(7 downto 0)=01011001 and q1(7 downto 4)=0101 and q1(0)=0 elseclk1024 when q2(7 downto 0) & q1(7 downto 0)=0000000000000000 else0;前五声讯响功能报时电路由500Hz驱动,整点报时有1024hz驱动。end aa;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cdu60s is秒钟显示模块port ( clk1,clr :in std_logic; clk1输入1hz时钟,clr清零信号 co : out std_logic; 进位输出 m :out std_logic_vector (7 downto 0); 秒钟显示输出 end cdu60s ;architecture aa of cdu60s is signal out1,out2 :integer range 0 to 9; signal out3,out4 :std_logic_vector (3 downto 0); signal clk:std_logic;beginprocess(clk1)beginif clr=1 then out1=0; out2=0; 异步清零elsif clk1event and clk1=1 thenif (out2=5) and (out1=9) then 模59计数out1=0;out2=0;co=1;elseout1=out1+1;co=0;if out1=9 and out2/=5 then 化十六进制为十进制out1=0;out2=out2+1;co=0;end if;end if;end if;out3= conv_std_logic_vector(out1,4);out4= conv_std_logic_vector(out2,4);m=out4 & out3;end process;end aa;library ieee;use ieee.std_logic_1164.all; 分钟显示模块use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cdu60 isport ( clk1,clk2,ss :in std_logic; clk1输入1/60hz时钟,ck2调分递增频率 ss调分信号 co : out std_logic; 进位输出 m :out std_logic_vector (7 downto 0); 分钟显示end cdu60 ;architecture aa of cdu60 is signal out1,out2 :integer range 0 to 9; signal out3,out4 :std_logic_vector (3 downto 0); signal clk,cay:std_logic;beginco= cay when ss=0 else 0; 调分时禁止进位信号输出影响时钟显示clk=clk1 when ss=0 else clk2; 调分时切换驱动频率到2hzprocess(clk)beginif clkevent and clk=1 thenif (out2=5) and (out1=9) then模59计数out1=0;out2=0;cay=1;elseout1=out1+1;cay=0;if out1=9 and out2/=5 thenout1=0;out2=out2+1;cay=0;end if;end if;end if;out3= conv_std_logic_vector(out1,4);out4= conv_std_logic_vector(out2,4);m=out4 & out3;end process;end aa;library ieee;use ieee.std_logic_1164.all; 时钟显示模块use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cdu24 isport ( clk1, clk2 ,sa:in std_logic; clk1输入1/3600hz时钟,ck2调时递增-频率(2hz),ss调时信号co : out std_logic; 进位输出 mm :out std_logic_vector (7 downto 0); 时钟显示end cdu24 ;architecture aa of cdu24 is signal out1,out2 :integer range 0 to 9; signal out3,out4 :std_logic_vector (3 downto 0); signal clk ,cay:std_logic;beginco=cay when sa=0 else 0; 调时时禁止进位信号输出clk=clk1 when sa=0 else clk2; 调时时切换驱动频率到2hzprocess(clk)beginif clkevent and clk=1 thenif (out2=2) and (out1=3) then 模23计数out1=0;out2=0;cay=1;elseout1=out1+1;cay=0;if out1=9 then 进制转换out1=0;out2=out2+1;end if;end if;end if;out3= conv_std_logic_vector(out1,4);out4= conv_std_logic_vector(out2,4);mm=out4 & out3;end process;end aa;四、实验报告要求1. 画出顶层原理图。2. 对照数字钟电路框图分析电路工作原理。3. 写出各功能模块的VHDL语言源文件。4. 叙述各模块的工作原理。5. 说明按键消抖电路的工作原理,画出有关波形图。6. 详述闹时电路的工作原理,绘出详细电路或框图,并写出VHDL语言源文件,并画出有关波形。7. (选做)考虑如何将闹时设置显示出来,即当选定闹时设置时,数码管将显示闹时时间。第 29 页
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!