重庆科创学院-EDA十进制计数器并用led显示

合集下载

LED数码显示时钟(EDA程序设计)

LED数码显示时钟(EDA程序设计)

LED 数码显示时钟一、实验目的 :1、地运用数字系统的设计方法进行数字系统设计。

2、能进行较复杂的数字系统设计。

3、数字钟的工作原理, 数字钟的工作流程图与原理方框图, 自顶向下的数字系统设计方法。

二、实验原理:1、数字钟的基本工作原理:数字钟以其显示时间的直观性、走时准确性而受到了人们的欢迎并很快走进了千 家万户。

作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。

数字钟的基本原理方框图如下:(1)时基T 产生电路:由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为 1Hz 的、非常稳定的计数时钟脉冲。

(2)控制逻辑电路:产生调时、调分信号及位选信号。

调时、调分信号的产生:由计数器的计数过程可知,正常计数时,当秒计数器( 60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。

现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为2Hz 的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。

调节小时的时间也一样的实现。

(3)计数显示电路:由计数部分、数据选择器、译码器组成,是时钟的关键部分。

计数部分: 由两个 60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数。

数据选择器:84输入14输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号‘—')。

EDA三位十进制计数显示器

EDA三位十进制计数显示器

三位十进制计数显示器一、设计要求1、设计3位十进制计数器;2、设计输出低电平有效的七段显示译码器;3、显示计数器值。

二、实验原理三位十进制计数显示器的设计分三步完成。

先设计三位十进制计数电路,再设计显示译码电路,最后建立一个顶层文件将前两者连接起来。

三、实验器材计算机一台操作系统:WINDOWS XP软件:ispDesignEXPERT System硬件:电路板一个四、设计程序代码1、三位十进制计数程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COU3 ISPORT(CLK,RESET,CIN :IN STD_LOGIC;CO :OUT STD_LOGIC;BCDAP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDBP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDCP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COU3;ARCHITECTURE BEHAVE OF COU3 ISSIGNAL BCDAN:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BCDBN:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BCDCN:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINBCDAP<=BCDAN;BCDBP<=BCDBN;BCDCP<=BCDCN;KK1:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDAN<="0000";ELSIF(CIN='1')THENIF(BCDAN="1001")THENBCDAN<="0000";ELSEBCDAN<=BCDAN+'1';END IF;END IF;END IF;END PROCESS KK1;KK2:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDBN<="0000";ELSIF(CIN='1') AND (BCDAN="1001")THENIF(BCDBN="1001")THENBCDBN<="0000";ELSEBCDBN<=BCDBN+'1';END IF;END IF;END IF;END PROCESS KK2;KK3:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDCN<="0000";ELSIF(CIN='1') AND (BCDBN="1001") AND (BCDAN="1001")THEN IF(BCDCN="1001")THENBCDCN<="0000";ELSEBCDCN<=BCDCN+'1';END IF;END IF;END IF;END PROCESS KK3;END BEHAVE;2、七段显示译码器程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SEG7 ISPORT(II:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Y :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END SEG7;ARCHITECTURE BEHAVE OF SEG7 ISSIGNAL INDATA:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGININDATA<=II;PROCESS(INDATA)BEGINCASE INDATA ISWHEN"0000"=> Y<="0000001";WHEN"0001"=> Y<="1001111";WHEN"0010"=> Y<="0010010";WHEN"0011"=> Y<="0000110";WHEN"0100"=> Y<="1001100";WHEN"0101"=> Y<="0100100";WHEN"0110"=> Y<="0100000";WHEN"0111"=> Y<="0001111";WHEN"1000"=> Y<="0000000";WHEN"1001"=> Y<="0000100";WHEN"1010"=> Y<="0001000";WHEN"1011"=> Y<="1100000";WHEN"1100"=> Y<="0110001";WHEN"1101"=> Y<="1000010";WHEN"1110"=> Y<="0110000";WHEN"1111"=> Y<="0111000";WHEN OTHERS=>Y<="XXXXXXX";END CASE;END PROCESS;END BEHAVE;3、顶层文件程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY COU37SEG ISPORT(CLK,RESET,ENA:IN STD_LOGIC;SEG1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEG2: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEG3: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END COU37SEG;ARCHITECTURE X37 OF COU37SEG ISCOMPONENT SEG7PORT(II:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Y :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT COU3PORT(CLK,RESET,CIN:IN STD_LOGIC;BCDAP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDBP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDCP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL A,B,C:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU0:COU3 PORT MAP(CLK,RESET,ENA,A,B,C);U1:SEG7 PORT MAP(A,SEG1);U2:SEG7 PORT MAP(B,SEG2);U3:SEG7 PORT MAP(C,SEG3);END X37;五、设计步骤1、打开ispEXPERT软件,简历一个新的工程(1)单击菜单File选New Project(2)输入工程路径,工程名2、建立VHDL文件单击File选New菜单项,选择VHDL File选项,单击OK按钮以简历VHDL 文件,分别建立三位十进制计数器程序的vhd文件COU3.vhd、七段显示译码器程序的vhd文件SEG7.vhd、顶层文件的vhd文件COU37SEG.vhd。

EDA课程设计之十进制计数器流程

EDA课程设计之十进制计数器流程

2.1 十进制计数器流程2.11 建立工作库文件夹和编辑设计文件任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。

此文件夹将被EDA软件默认为工作库(Work Library)。

一般,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。

在建立了文件夹后就可以将设计文件通过Quartus II的文本编辑器编辑并存盘,步骤如下:(1)新建一个文件夹。

这里假设本项设计的文件夹取名为CNT10B,在D盘中,路径为d:\cnt10b 。

注意,文件夹名不能用中文,也最好不要用数字。

(2)输入源程序。

打开QuartusII,选择菜单File→New。

在New窗口中的Device Design Files中选择编译文件的语言类型,这里选择“VHDL File”(如图2-1所示)。

然后在VHDL 文本编译窗中输入(键入)例3-22所示的VHDL示例程序。

图2-1 选择编辑文件的语言类型《示例程序和实验指导课件位置》:\EDA_BOOK3_FOR_1C6\chpt4\EXPT53_cnt10\工程cnt10【例3-22】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT (CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿IF EN = '1' THEN --检测是否允许计数(同步使能)IF CQI < 9 THEN CQI := CQI + 1; --允许计数, 检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零END IF;END IF;END IF;IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号ELSE COUT <= '0';END IF;CQ <= CQI; --将计数值向端口输出END PROCESS;(3)文件存盘。

《EDA课程设计2位十进制四则运算电路》

《EDA课程设计2位十进制四则运算电路》

《电子设计自动化》课程设计题目:2位十进制四则运算器电路院(系)信息科学与工程学院专业通信工程届别2011级班级1班学号1115102040姓名韦桂任课老师彭盛亮摘要本次课程设计主要内容是采用VHDL语言实现2位十进制数四则运算编程,用Quartus II 软件实现功能仿真,并完成硬件测试。

本次试验目的是:输入任意两个两十进制位数(0~99),选择计算模式(加减乘除),输出它们的计算结果,利用四个数码 LED 分别显示输入的两个两位数,利用四个发光二极管显示计算模式(每次只有一个二极管发光),利用另外四个数码管显示计算结果;实现方法是:将整个系统分为输入模块,计算模块和输出模块三个部分组成。

输入模块由3个脉冲键,2个复位键和2个使能端组成;计算模块分别为加法器,减法器,乘法器,除法器;输出模块通过8个数码管和4个发光二极管分别显示运算数值,运算结果和运算模式。

经过多次修改,波形仿真和硬件测试均成功。

设置两个计数器的复位键,以便于输入比较大的数之后,想进行比较小的数字的运算可以按复位键,以减少按键5或键6的次数,设置模块时,为使电路看起来更加简洁,应减少使用电路模块,如:都除以10取余时,把除数端口都连接在同一个常数端。

目录第一部分系统设计 (4)1.1设计要求: (4)1.2系统设计方案: (4)1.2.1设计总思路: (4)1.2.2实验的主要方法: (4)1.2.3电路设计: (4)1.2.4实验电路图: (4)(1)总电路 (5)(2)输入模块: (5)(3)计算模块 (5)(4)输出模块: (6)1.2.5:总体方法的论证与比较: (7)第二部分软件设计 (7)2.1软件设计平台 (7)2.2程序流程图 (7)2.3实验相关程序 (7)2.3.1clkA与clkB中需要用的100进制计数器cnt100: (7)2.3.2.四进制计数器cnt4程序: (8)2.3.3.nu15_add中需用的加法程序: (9)2.3.4.nu15_sub中需要用的减法程序: (9)2.3.5.nu15_mod程序: (10)2.4 总电路波形仿真 (11)2.5 管脚分配 (11)(1)Input: (11)(2)Output: (11)第三部分系统测试 (12)3.1 软件测试结构综合结果 (12)3.2仪器设备名称、型号 (12)3.3功能测试方法、步骤: (12)第四部分结论及收获 (13)4.1结论 (13)4.2致谢 (13)4.3 参考文献 (13)第一部分系统设计1.1设计要求:输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果;发光二极管显示运算模式;可调用LPM_MULT及LPM_DIVIDE模块。

EDA技术课程设计报告-LED点阵汉字显示

EDA技术课程设计报告-LED点阵汉字显示

EDA技术课程设计报告题目:LED点阵汉字显示姓名学号班级指导教师2012年1 月12 日要求:1.指导教师按照课程设计大纲要求完成学生课程设计指导工作。

2.课程设计任务书由指导教师照大纲要求填写,内容要全面。

3.课程设计报告由参加本学生填写。

课程设计结束时交指导教师。

4.指导教师要根据每一位学生课程设计任务完成情况,认真审核设计报告,并在课程设计结束时,给出客观、准确的评语和成绩。

5.课程设计任务书和报告要语言流畅,图表正确规范。

课程设计任务书课程设计报告注:此表可加附页图1 PCtoLCD生成汉字“字”及其编码表1 SEL与L对应关系SEL3-SEL0 L0-L15 0000 "0000000000000000"0001 "0000000000000000"0010 "0001111111111000"0011 "0000100010001000"0100 "0000100010001000"0101 "0000100010001000"0110 "0000100010001000"0111 "0111111111111111"1000 "1000100010001000"1001 "1000100010001000"1010 "1000100010001000"1011 "1000100010001000"1100 "1001111111111000"1101 "1000000000000000"1110 "1111000000000000"1111 "0000000000000000"2.“电”字显示原理及各模块工作原理2.1“电”字显示原理图“电”字显示原理图如图2.1所示。

eda课程设计--LED点阵显示控制

eda课程设计--LED点阵显示控制

绍兴文理学院数理信息学院EDA技术课程设计报告课题 LED点阵显示控制设计姓名学号专业班级指导教师时间课程设计任务书LED点阵显示控制摘要本文对基于FPGA控制的LED汉字滚动显示器的设计方法进行了探讨。

提出了两个实现方案。

并对其中一个方案作了详细说明。

文中首先介绍了完成本设计所需的原理、技术、以及所要实现的功能;然后研究了滚动显示汉字的方法及键控模式改变滚动的方式;最后,用VHDL语言程序设计了一个完整的LED汉字滚动显示器。

本系统在FPGA试验箱上完成,由扫描控制模块、只读存储器ROM和16*16LED点阵显示模块、一个4-16译码器构成。

其中:扫描控制模块和只读存储器ROM集成在FPGA 芯片内部。

一个4-16译码器(74LS154)输入完成FPGA中16×16点阵显示模块的列扫描模式。

FPGA定义的只读存储器ROM中保存了要显示的汉字的数模,并以16位的数据宽度输出到LED阵显示模块的行端,配合列扫描控制共同完成汉字的滚动显示。

同时通过键控模式,对字幕滚动速度、方式、形式可调。

本系统利用数字系统设计自动化(EDA)技术实现了全硬件方式的LED点阵显示。

利用FPGA内部的物理资源,将只读存储器ROM和主要功能模块设计在FPGA内部。

充分显示了EDA技术设计的灵活性,同时也大大提高了系统的集成度和稳定性关键词FPGA;LED;EDA;动态扫描目录课程设计任务书 (I)摘要 (II)1. 设计概述 (1)1.1LED点阵原理 (1)1.3汉字显示原理 (2)1.4设计的主要功能 (2)1.5设计的主要工作 (3)2. 设计方案 (4)2.1方案一 (4)2.2方案二 (4)2.3方案比较 (5)3. 设计实现 (6)3.1分频程序 (6)3.2移动速度控制程序 (8)3.3按键扫描 (9)3.4汉字显示程序 (10)4. 设计验证 (12)5. 总结 (14)参考文献 (15)附录 (16)1. 设计概述1.1LED 点阵原理以下为8×8点阵LED 外观及引脚图及其等效电路,只要其对应的X 、Y 轴顺向偏压,即可使LED 发亮。

eda课程设计之2位十进制四则运算器电路四则运算器.x

eda课程设计之2位十进制四则运算器电路四则运算器.x

《电子设计自动化》课程设计题目: 2位十进制四则运算器电路院(系)信息科学与工程学院专业通信工程届别 2011级班级学号姓名任课老师彭盛亮摘要本设计是利用EDA技术实现的2位十进制四则运算器,是基于QuartusII7.2软件,利用其强大、直观、便捷和操作灵活的原理图输入设计的功能来完成本次设计的。

此设计利用QuartusII7.2中的EP2C5T144C8芯片来控制整个程序的运行,用七段数码管显示各个输入和输出,用LED灯的亮灭来显示运算模式,而软件部分则是由VHDL 语言来编写的,是通过精心的设计和合理的规划而完成的设计。

设计完成后的运算器不仅能实现数据的加减乘除运算,而且还能使数据及其计算结果在数码管上显示出来,能够实现0-99的十进制数字四则运算。

目录第一章系统设计 (1)1.1设计要求 (1)1.2系统设计方案 (1) (2) (3)第二章单元电路设计 (5)2.1 输入模块 (5)2.2加法模块 (5)2.3减法模块 (6)2.4乘法模块 (7)2.5 除法模块 (8)2.6 模式选择模块 (9)2.7输出模块 (9)第三章软件设计 (10)3.1 软件设计平台、开发工具和实现方法 (10)3.2程序的流程方框图 (10)3.3实现的功能及程序清单 (11) (11) (12) (13) (13) (14) (14) (15)第四章系统测试 (16)4.1 功能的测试方法、步骤 (16)4.2 仪器设备 (17)第五章结论 (18)参考文献 (18)附录A 电路图图纸 (18)附录B 软件程序 (22)第一章系统设计1.1设计要求输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果;发光二极管显示运算模式;可调用LPM_MULT及LPM_DIVIDE模块。

1.2系统设计方案通过分析可知,要完成本次课程设计可以分为三个模块来实现相应的功能,分别是输入模块、计算模块以及输出模块。

课程设计--10进制计数器以及8位按键显示器

课程设计--10进制计数器以及8位按键显示器

数电课程设计实验课题:10进制计数器以及8位按键显示器所在学院:信息科学与工程学院专业班级:通信工程1103班姓名:吴勇慷学号:110404302指导教师:孙洪林课程设计内容以及要求:功能一:能实现0~9九个数连续循环显示的加法计数功能。

功能二:能实现8个按键,当按到某个按键时,数码管上显示该按键所对应的的数字,互相不影响。

设计的任务1:设计电路图2:写出电路原理3:对所做的电路进行调试分析4:对实验进行总结和体会实验所需元器件USB插口一个,开关8个,200K的电阻11个以及47K的电阻一个,一个74LS148,74LS160,CD4511,74LS04,单刀双掷开关,数码管,555定时器,0.1uF的电容,0.01uF的电容设计方法和步骤:将电路分为两个部分,一部分为按键显示,另一部分是自动循环显示。

按键显示大体部分由开关控制信号的输入进入编码器然后编码器的输出通过译码器在通过数码管进行显示。

0~9九个数连续循环显示电路用十进制计数器还要有脉冲发生器最后将输出结果显示出来。

最后将这两个电路连接起来通过计数器的预制数端进行功能的转换。

设计原理为实现10进制计数器功能,需用到74LS160芯片。

当把它的LD端与RD端接到高电平时,它工作在计数功能,这时它的工作原理就是10进制计数器;为实现8按键显示器功能,需要用到74HC148优先编码器与74LS04非门芯片,74HC148为cmos管,所以要加上拉电阻,之后用74HC148把8位信号编码进去,输出时需要用非门将输出信号反转,才能得到所需要的信号。

此时将74LS160 LD端接到低电平,RD端接到高电平,这时它工作在置数功能,将74LS148的编码信号完全输出。

整体电路的显示需要CD4511译码器和译码管的结合使用。

由于整体电路共用一个数码管和译码器,所以需要将这两种功能合在一起,因此需要一个单刀双掷开关(自锁开关)来实现。

当自锁开关自锁时,实现8位按键显示功能;当自锁开关不自锁时,实现10进制计数器功能。

EDA三位十进制计数显示器

EDA三位十进制计数显示器

3位十进制计数显示器设计一实验目的1掌握CPLD技术的层次化设计2 熟悉利用MAX-PLUSII的原理图输入方法设计简单的组合电路。

3 掌握计数显示器的设计方法二设计内容设计一个三位10进制计数器,对计数器相关的理论进行分析、归纳和总结;三位10进制计数器的结构组成及原理分析。

程序代码(含注释);给出程序中主要函数或者语句的功能说明和使用说明;给出程序仿真运行结果和图表、以及实验结果分析和总结三实验原理三位十进制计数显一示器的设计分三步完成。

先设计十进制计数电路,再设计显示译码电路,最后建立个顶层文件将两者连接起来。

计数器的输入信号是计数信号(CLK),门控信号是手动清零信号(RESET)、手动允许计数(ENA)。

清零信号Rest为1时,保持在清零状态,计数脉冲上升沿无效;允许计数端为0时,为保持状态,这时保持至最后一个计数,计数脉冲上升沿无效;清零信号为0,允许计数信号为1时,计数器上升沿脉冲计数。

计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计数,还可以用于分频,定时,产生节拍脉冲和脉冲序列以及进行数字运算等。

四源程序三位十进制计数程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COU10 ISPORT(CLK,RESET,CIN :IN STD_LOGIC;CO :OUT STD_LOGIC;BCDAP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDBP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDCP :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COU3;ARCHITECTURE BEHA VE OF COU3 ISSIGNAL BCDAN:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BCDBN:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BCDCN:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINBCDAP<=BCDAN;BCDBP<=BCDBN;BCDCP<=BCDCN;KK1:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDAN<="0000";ELSIF(CIN='1')THENIF(BCDAN="1001")THENBCDAN<="0000";ELSEBCDAN<=BCDAN+'1';END IF;END IF;END IF;END PROCESS KK1;KK2:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDBN<="0000";ELSIF(CIN='1') AND (BCDAN="1001")THENIF(BCDBN="1001")THENBCDBN<="0000";ELSEBCDBN<=BCDBN+'1';END IF;END IF;END IF;END PROCESS KK2;KK3:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(RESET='0')THENBCDCN<="0000";ELSIF(CIN='1') AND (BCDBN="1001") AND (BCDAN="1001")THEN IF(BCDCN="1001")THENBCDCN<="0000";ELSEBCDCN<=BCDCN+'1';END IF;END IF;END IF;END PROCESS KK3;END BEHA VE;显示译码器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY YIMAQI ISPORT(II:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Y :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END SEG7;ARCHITECTURE BEHA VE OF SEG7 ISSIGNAL INDATA:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGININDA TA<=II;PROCESS(INDATA)BEGINCASE INDATA ISWHEN"0000"=> Y<="0000001";WHEN"0001"=> Y<="1001111";WHEN"0010"=> Y<="0010010";WHEN"0011"=> Y<="0000110";WHEN"0100"=> Y<="1001100";WHEN"0101"=> Y<="0100100";WHEN"0110"=> Y<="0100000";WHEN"0111"=> Y<="0001111";WHEN"1000"=> Y<="0000000";WHEN"1001"=> Y<="0000100";WHEN"1010"=> Y<="0001000";WHEN"1011"=> Y<="1100000";WHEN"1100"=> Y<="0110001";WHEN"1101"=> Y<="1000010";WHEN"1110"=> Y<="0110000";WHEN"1111"=> Y<="0111000";WHEN OTHERS=>Y<="XXXXXXX";END CASE;END PROCESS;END BEHA VE;顶层文件:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DINGCEN ISPORT(CLK,RESET,ENA:IN STD_LOGIC;SEG1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SEG2: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SEG3: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END COU37SEG;ARCHITECTURE X37 OF COU37SEG ISCOMPONENT SEG7PORT(II:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Y :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT COU3PORT(CLK,RESET,CIN:IN STD_LOGIC;BCDAP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDBP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BCDCP: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL A,B,C:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU0:COU3 PORT MAP(CLK,RESET,ENA,A,B,C);U1:SEG7 PORT MAP(A,SEG1);U2:SEG7 PORT MAP(B,SEG2);U3:SEG7 PORT MAP(C,SEG3);END X37;五仿真结果六总结本次的课程设计我个人觉得是很有意义的。

EDA实验报告——计数器

EDA实验报告——计数器

模323计数器设计实验报告一、实验内容在QuartusII平台上,利用VHDL代码实现学号323计数器的设计,并在三位数码管显示出来。

二、实验步骤与过程分析1、建立工程。

打开Quartus II软件平台,点击File---〉new project wizard建立一个工程xuehao_323,工程所在文件夹名字为xuehao_323,设置顶层实体名称为xuehao_323,点击next设置device,按照实验箱上FPGA的芯片名更改编程芯片的设置。

分析:选择的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。

2、添加VHDL文件。

在所在工程添加文件cnt10.vhd(十进制计数器),cnt_xuehao.vhd(323进制计数器),scan_led3_vhd.vhd(三位数码管显示),exp_cnt_xuehao323_7seg.vhd(数码管显示323三位学号计数器)四个文件。

这里通过老师给出的代码进行修改且理解:cnt10.vhd如下:分析:这是十进制计数器的VHDL代码设计,因为十进制有十个状态,所以输入数据和输出状态需要四位宽,其中输入端口有aclr 清零端,clock时钟信号,cnt_en使能端,data[3..0]数据输入,sload装载使能,当aclr为高电平有效时,输出清零,从0开始,计数为时钟信号clock的上升沿到来时且使能端cnt_en 为高电平有效时自动加1(sload为低电平时),如果装载使能sload为高电平有效时,则装载数据data[3..0],输出端口有两个,分别为cout(当q[3..0]为9时输出为高电平),q[3..0]变化为0—9循环变化。

cnt_xuehao.vhd分析如下:这里是调用cnt_10十进制计数器的元件例化来设计323(学号)计数器。

输入端口aclr(高电平有效清零端),clock(时钟信号上升沿有效),cnt_en(使能端),sload(装载时能,高电平有效时装在输入的数据),datab[3..0],datas[3..0],datag[3..0](三位学号的数据输入端,每位变化相当于一个十进制计数器);输出端口qb[3..0](百位)qs[3..0](十位)qg [3..0](个位)变化为qb qs qg=000到322共323中状态,当等于322时,输出cout为高电平指示达到一个循环。

实验九 数字钟(综合实验)重庆科创职业学院

实验九 数字钟(综合实验)重庆科创职业学院

实验九数字钟(综合实验)一、设计要求(数字钟的功能)1、具有时、分、秒计数显示功能,以二十四小时循环计时。

2、具有清零,调节小时,分钟的功能。

3、具有整点报时同时LED灯花样显示的功能。

二、实验目的1、掌握多位计数器相连的设计方法。

2、掌握十进制,六进制,二十四进制计数器的设计方法。

3、继续巩固多位共阴极扫描显示数码管的驱动,及编码。

4、掌握扬声器的驱动。

5、LED灯的花样显示。

6、掌握CPLD技术的层次化设计方法。

三、硬件要求1、主芯片Altera EPM7128SLC84-15。

2、8个LED灯。

3、扬声器。

4、8位8段扫描共阴极数码显示管。

5、三个按键开关(清零,调小时,调分钟)。

四、实验原理在同一CPLD芯片上集成了如下电路模块:1、时钟计数:秒……60进制BCD码计数。

分……60进制BCD码计数。

时……24进制BCD码计数。

同时整个计数器有清零、调时、调分功能。

在接近整数时能提供报时信号。

2、具有驱动8位8段共阴极扫描数码管的片选驱动信号输出和8段字形译码输出。

编码和扫描可参考“实验四”。

3、扬声器在整点时有报时驱动信号产生(响声持续多长时间?)。

4、LED灯按个人口味在整点时有花样显示信号产生。

五、实验内容及步骤1、根据电路特点,可在教师指导下用层次设计概念。

将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。

让几个学生分做和调试其中之一,然后再将各模块和起来联试。

以培养学生之间的合作精神,同时加深层次化设计概念。

2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合。

六、原理图如图9-1所示(模块化设计)图9-1 (Clock.gdf)模块说明各种进制的计数及时钟控制模块(10进制、六进制、24进制);扫描分时显示,译码模块;彩灯,扬声器编码模块;各模块都是AHDL语言编写。

七、实验连线◎输入接口:1、代表清零、调时、调分信号RESET、SETHOUR、SETMIN的管脚分别连接按键开关。

EDA计数器实验

EDA计数器实验

计数器一、实验目的1、设计一个带使能输入、进位输出及同步清0的增1十进制计数器2、设计一个带计数使能、同步清0、同步加载的4位计数器3、设计一个带使能、同步清0控制和进位输出的增14位二进制计数器,计数结果由一位7段码管显示。

4、设计一个带使能和同步清0控制的增1减18位二进制计数器,计数结果由7段数码管显示。

二、实验内容1、带使能、同步清0控制和进位输出的增14位二进制计数器VHDL源代码library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter2 isPort ( clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;co : out STD_LOGIC;y : out STD_LOGIC_VECTOR (6 downto 0));end counter2;architecture Behavioral of counter2 issignal cnt:STD_LOGIC_VECTOR(3 downto 0);signal led:STD_LOGIC_VECTOR(6 downto 0);beginprocess(clk)beginif(clk'event and clk='1')thenif clr='1' thencnt<=(others=>'0');elsif en='1' thenif cnt="1111" thencnt<="0000";elsecnt<=cnt+'1';end if;end if;end if;end process;co<='1' when cnt="1111" else '0';y<=not led;with cnt selectled<="1111001"when"0001","0100100"when"0010","0110000"when"0011","0011001"when"0100","0010010"when"0101","0000010"when"0110","1111000"when"0111","0000000"when"1000","0010000"when"1001","0001000"when"1010","0000011"when"1011","1000110"when"1100","0100001"when"1101","0000110"when"1110","0001110"when"1111","1000000"when others;end Behavioral;激励文件源代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY counter_2_tbw_vhd ISEND counter_2_tbw_vhd;ARCHITECTURE behavior OF counter_2_tbw_vhd IS-- Component Declaration for the Unit Under Test (UUT) COMPONENT counter2PORT(clk : IN std_logic;clr : IN std_logic;en : IN std_logic;co : OUT std_logic;y : OUT std_logic_vector(6 downto 0));END COMPONENT;--InputsSIGNAL clk : std_logic := '0';SIGNAL clr : std_logic := '0';SIGNAL en : std_logic := '0';--OutputsSIGNAL co : std_logic;SIGNAL y : std_logic_vector(6 downto 0);BEGIN-- Instantiate the Unit Under Test (UUT)uut: counter2 PORT MAP(clk => clk,clr => clr,en => en,co => co,y => y);clk<=not clk after 20 ns;tb : PROCESSBEGINclr<='1','0' after 30 ns;en<='0','1' after 20 ns;-- Wait 100 ns for global reset to finish--wait for 100 ns;-- Place stimulus herewait; -- will wait foreverEND PROCESS;END;功能仿真时序仿真管脚设置NET "clk" LOC = "E10" ;NET "clr" LOC = "L13" ;NET "co" LOC = "F12" ;NET "en" LOC = "L14" ;NET "y<0>" LOC = "B4" ;NET "y<1>" LOC = "A4" ;NET "y<2>" LOC = "D5" ;NET "y<3>" LOC = "C5" ;NET "y<4>" LOC = "A6" ;NET "y<5>" LOC = "B6" ;NET "y<6>" LOC = "E7" ;实验现象七段数码管显示0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F,每次循环完成co所接led灯亮一下,表示进位。

EDA实验报告:十进制计数器

EDA实验报告:十进制计数器
7
Select SEG7 O/P Q : buffer STD_LOGIC_VECTOR( 3 DOWNTO 0); --
3
重庆三峡学院实验报告纸
Number Display Signal M : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
); END jishuqi; ARCHITECTURE a OF jishuqi IS
A. 时钟信号(CLK)为上升沿时,计数一次; B. 十进制数计数 0~9,满 9 进 1; 2.D 触发器是 CMOS 数字集成电路单元中时序逻辑电路中的重要组成部 分之一;D 触发器属于时钟控制触发,时钟信号为高电平时触发器改变 输出状态。 3.当时钟信号(CLK)为高电平,且 CLR 也为高电平时,计数清 0,CLR 是高电平清 0 还是低电平清 0 是由程序指定; 4.当使能信号 EN 为低电平的时候,保持;EN 是高电平还是低电平保持 是由程序指定;
重庆三峡学院实验报告纸当时钟信号clk为高电平且clr也为高电平时计数清0并重新开始计数
实验报告
课程名称
EDA 原理及应用
实验名称
十进制计数器
实验类型 验证 系别 年级班别 级 班 学生姓名 实验教师 编号
学时 专业 开出学期 学号 成绩
2 第期
年月 日
一、实验目的
重庆三峡学院实验报告纸
1. 熟悉数码管的工作原理;
6
重庆三峡学院实验报告纸
2. 将未分配的管脚置为三态输入: 【Assignments】→【Device…】 →【Device】 →【Device & Pin
Options…】 →【Unused Pins】 →【Reserve all unused pins : AS input tri-stated】。 四、实验总结 1.通过本次实验了解十进制同步加载、异步复位计数器的工作原理:

重庆科创职业学院EDA概述

重庆科创职业学院EDA概述

2、硬件描述语言HDL •目前,硬件描述语言以VHDL、Verilog HDL最为 流行,它们都是IEEE的标准语言。 3、VHDL设计方法 VHDL设计常用的方法有直接设计方法、自顶向下 设计方法和自底向上设计方法3种。 4、EDA技术的特点 5、EDA技术的发展趋势
1.3
可编程逻辑器件的设计流程
第1章 EDA技术简介
1.1
可编程逻辑器件
一 训练任务
要求分组阐述简单数字钟电路的设计思路。数字钟 的指标要求如下: (1) 时间以12h为一个周期; (2) 显示时、分、秒; (3) 具有校时功能,可以分别对时及分进行单独校准。
二 任务分析
1、传统电子系统设计方案: 根据功能模块选择具有固定功能的标准集 成电路和分立元件构成单元电路,最后将各单 元电路连接在一起进行整机调试,从而实现系 统功能。 缺点:设计效率低,灵活性差; 改进方法:基于PLD器件的电子系统设计 方法。
1.2
一 任务描述
EDA技术及其应用
基于PLD的汽车电子系统
二、任务分析
基于PLD器件的电子系统设计方法是核心
三、知识准备 1、EDA技术概念 电子设计自动化(Electronic Design Automation) 本书所介绍的EDA枝术,就是指以可编程逻辑器 件为设计载体,以硬件描述语言为系统逻辑描述的 主要表达方式,以可编程逻辑器件的开发软件及实 验开发系统为设计工具,自动形成电子系统的设计 文件,并经逻辑编译、逻辑化简、逻辑分割、逻辑 综合及优化、逻辑布局布线、逻辑仿真,直至对特 定目标芯片的适配编译、逻辑映射和编程下载等工 作,最终形成实现既定功能的集成电子系统或专用 集成芯片的电子设计自动化技术。
显示器
显示器

EDA课程设计报告之数字时钟设计(免费哦~)

EDA课程设计报告之数字时钟设计(免费哦~)

计算机科学与技术学院EDA课程设计报告设计题目:数字时钟的设计班级:姓名:学号:日期:2011年6月20日一、系统设计要求1、具有时、分、秒的计数显示功能,24小时循环显示。

2、具有异步清零、预置初值功能,实现LED动态显示,整点报时采用声音报时,几点报几下。

3、采用元件例化方式实现各模块间的连接。

二、系统设计方案1、整个模块采用两个时钟,一个时钟的频率为一秒,用于程序秒的输入。

另一个时钟频率较高,用于七段显示器的选择端口三八译码器的输入时钟。

2、时分秒皆采用两个位的计数,一位代表十位,一位代表个位。

分秒为60进制,时为24进制。

个位逢九向十位进一,秒逢59向分进一,分逢59向时进一。

3、在小时的子程序里把两位小时数转换成一位数作为报时程序的输入。

三、主要VHDL源程序秒—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY SECOND ISPORT (CLK1,R:IN STD_LOGIC;CO1:OUT STD_LOGIC;S0,S1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ;ARCHITECTURE XIA OF SECOND ISBEGINPROCESS(CLK1,R,SS0,SS1)VARIABLE SSS0,SSS1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF R='1' THEN SSS0:="";SSS1:="";ELSIF CLK1'EVENT AND CLK1='1' THENIF SSS1="" AND SSS0=""THEN CO1<='1';SSS0:=""; SSS1:="";ELSIF SSS0="" THEN SSS0:="";SSS1:=SSS1+1;ELSE SSS0:=SSS0+1;CO1<='0';END IF;END IF;S0<=SSS0;S1<=SSS1;END PROCESS;END ;分—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY MINUTE ISPORT (CLK2,R,S:IN STD_LOGIC;MM0,MM1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);CO2:OUT STD_LOGIC;M0,M1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ;ARCHITECTURE XIA OF MINUTE ISBEGINPROCESS(CLK2,R,S,MM0,MM1)VARIABLE MMM0,MMM1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF R='1' THEN MMM0:="0000";MMM1:="0000";ELSIF S='1' THEN MMM0:=MM0;MMM1:=MM1;ELSIF CLK2'EVENT AND CLK2='1' THENIF MMM1="0101" AND MMM0="1001"THEN CO2<='1';MMM0:="0000"; MMM1:="0000";ELSIF MMM0="1001" THEN MMM0:="0000";MMM1:=MMM1+1;CO2<='0'; ELSE MMM0:=MMM0+1;CO2<='0';END IF;END IF;M0<=MMM0;M1<=MMM1;END PROCESS;END ;时—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.std_logic_unsigned.all;ENTITY HOUR ISPORT (CLK3,R,S:IN STD_LOGIC;HH0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);HH1:IN STD_LOGIC_VECTOR(1 DOWNTO 0);H0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);H1:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);NUMBER2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ;ARCHITECTURE XIA OF HOUR ISBEGINPROCESS(CLK3,R,S,HH0,HH1)VARIABLE HHH0:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE HHH1:STD_LOGIC_VECTOR(1 DOWNTO 0);VARIABLE NUMBER1,NUMBER0:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF R='1' THEN HHH0:="0000";HHH1:="00";ELSIF S='1' THEN HHH0:=HH0;HHH1:=HH1;ELSIF CLK3'EVENT AND CLK3='1' THENIF HHH0="0011" AND HHH1="10"THEN HHH0:="0000";HHH1:="00";ELSIF HHH0="1001" THEN HHH1:=HHH1+1;HHH0:="0000"; ELSE HHH0:=HHH0+1;END IF;END IF;H0<=HHH0;H1<=HHH1;IF HHH1="00" THEN NUMBER0:="";ELSIF HHH1="01" THEN NUMBER0:="";ELSIF HHH1="10" THEN NUMBER0:="";END IF;NUMBER1:=NUMBER0+HHH0;IF NUMBER1="" THEN NUMBER2<="";ELSIF NUMBER1>"" THEN NUMBER2<=NUMBER1-"";ELSE NUMBER2<=NUMBER1;END IF;END PROCESS;END ;报时—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY RING ISPORT(CLK4,CLK5:IN STD_LOGIC;NUMBER:IN STD_LOGIC_VECTOR(7 DOWNTO 0);P:OUT STD_LOGIC);END;ARCHITECTURE ONE OF RING ISBEGINPROCESS(CLK4,CLK5,NUMBER)VARIABLE R:STD_LOGIC;VARIABLE TEX:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK4='1' THENIF (NUMBER/=""AND TEX<NUMBER) THEN R:=CLK5;ELSE R:='0';END IF;IF CLK5'EVENT AND CLK5='1' THENIF TEX<NUMBER THENTEX:=TEX+1;END IF;END IF;ELSE TEX:="";END IF;P<=R;END PROCESS;END;显示—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dec7s ISPORT(a1,a2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);a3,a4,a5:IN STD_LOGIC_VECTOR(3 DOWNTO 0); a6:IN STD_LOGIC_VECTOR(1 DOWNTO 0);led7s1,led7s2,led7s3,led7s4,led7s5,led7s6 :OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END;ARCHITECTURE one OF dec7s ISBEGINPROCESS(a1,a2,a3,a4,a5,a6)BEGINCASE a1 ISWHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN OTHERS=>led7s1<="";END CASE;CASE a2 ISWHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN OTHERS=>led7s2<="";END CASE;CASE a3 ISWHEN "0000"=>led7s3<="";WHEN "0001"=>led7s3<="";WHEN "0010"=>led7s3<="";WHEN "0011"=>led7s3<="";WHEN "0100"=>led7s3<="";WHEN "0101"=>led7s3<="";WHEN "0110"=>led7s3<="";WHEN "0111"=>led7s3<="";WHEN "1000"=>led7s3<="";WHEN "1001"=>led7s3<="";WHEN OTHERS=>led7s3<=""; END CASE;CASE a4 ISWHEN "0000"=>led7s4<="";WHEN "0001"=>led7s4<="";WHEN "0010"=>led7s4<="";WHEN "0011"=>led7s4<="";WHEN "0100"=>led7s4<="";WHEN "0101"=>led7s4<="";WHEN "0110"=>led7s4<="";WHEN "0111"=>led7s4<="";WHEN "1000"=>led7s4<="";WHEN "1001"=>led7s4<="";WHEN OTHERS=>led7s4<=""; END CASE;CASE a5 ISWHEN "0000"=>led7s5<="";WHEN "0001"=>led7s5<="";WHEN "0010"=>led7s5<="";WHEN "0011"=>led7s5<="";WHEN "0100"=>led7s5<="";WHEN "0101"=>led7s5<="";WHEN "0110"=>led7s5<="";WHEN "0111"=>led7s5<="";WHEN "1000"=>led7s5<="";WHEN "1001"=>led7s5<="";WHEN OTHERS=>led7s5<=""; END CASE;CASE a6 ISWHEN "00"=>led7s6<="";WHEN "01"=>led7s6<="";WHEN "10"=>led7s6<="";WHEN OTHERS=>led7s6<=""; END CASE;END PROCESS;END one;顶层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY TOP ISPORT (CP,CLK,R0,S0:IN STD_LOGIC;SM0,SM1,SH0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SH1:IN STD_LOGIC_VECTOR(1 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);PP:OUT STD_LOGIC);END;ARCHITECTURE XIA OF TOP ISSIGNAL Y0,Y1:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL Y2,Y3,Y4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL Y5:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL YY6,YY1,YY2,YY3,YY4,YY5,YY7,PNUMBER:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CO11,CO22:STD_LOGIC;component SECONDPORT (CLK1,R:IN STD_LOGIC;CO1:OUT STD_LOGIC;S0,S1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));end component;component MINUTEPORT (CLK2,R,S:IN STD_LOGIC;MM0,MM1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);CO2:OUT STD_LOGIC;M0,M1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));end component;component HOURPORT (CLK3,R,S:IN STD_LOGIC;HH0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);HH1:IN STD_LOGIC_VECTOR(1 DOWNTO 0);H0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);H1:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);NUMBER2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));end component;component RINGPORT(CLK4,CLK5:IN STD_LOGIC;NUMBER:IN STD_LOGIC_VECTOR(7 DOWNTO 0);P:OUT STD_LOGIC);end component;component dec7sPORT(a1,a2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);a3,a4,a5:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a6:IN STD_LOGIC_VECTOR(1 DOWNTO 0);led7s1,led7s2,led7s3,led7s4,led7s5,led7s6:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));end component;BEGINYY7<="";U1:SECOND PORT MAP(CLK1=>CLK,R=>R0,S0=>Y0,S1=>Y1,CO1=>CO11); U2:MINUTE PORT MAP(CLK2=>CO11,R=>R0,S=>S0,M0=>Y2,M1=>Y3,CO2=>CO22,MM0=>SM0,MM1=>SM1);U3:HOUR PORT MAP(CLK3=>CO22,R=>R0,S=>S0,H0=>Y4,H1=>Y5,HH0=>SH0,HH1=>SH1,NUMBER2=>PNUMBER);U4:RING PORT MAP(CLK4=>CO22,CLK5=>CLK,NUMBER=>PNUMBER,P=>PP); U5:dec7s PORT MAP(a1=>Y0,led7s1=>YY1,a2=>Y1,led7s2=>YY2,a3=>Y2,led7s3=>YY3,a4=>Y3,led7s4=>YY4,a5=>Y4,led7s5=>YY5,a6=>Y5,led7s6=>YY6);PROCESS(CP)VARIABLE SELL:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINIF CP'EVENT AND CP='1' THENIF SELL="111" THEN SELL:="000" ;ELSE SELL:=SELL+1;END IF;END IF;CASE SELL ISWHEN "000"=>Y<=YY1;WHEN "001"=>Y<=YY2;WHEN "010"=>Y<=YY3;WHEN "011"=>Y<=YY4;WHEN "100"=>Y<=YY5;WHEN "101"=>Y<=YY6;WHEN OTHERS=>Y<=YY7;END CASE;SEL<=SELL;END PROCESS;END;四、系统仿真/硬件验证五、设计中遇到的问题与体会自己想了哈。

EDA实现LED名字显示

EDA实现LED名字显示

一、实验目的学会利用EDA技术实现全硬件方式的LED点阵显示; 学会利用EDA工具软件MuxplusⅡ编写VHDL程序。

二、实验原理1、LED的显示原理16×16扫描LED点阵的工作原理同8位扫描数码管类似。

它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。

通过时钟的每列扫描显示完整汉字。

列循环扫描:通过对每一列的扫描来完成对字母的现实,只要扫描的频率足够快,就能给人以连续的感觉。

因此要控制扫描的频率,不能太低,否则,就会造成视觉上的不连续,本设计的扫描频率不得低于50Hz,扫描。

2、汉字的存储用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。

第一步是获得数据并保存,即在存贮器中建立汉字数据库。

第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。

获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里涂实,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布。

3、汉字显示本设计所使用的16×16的点阵,EDA实验箱上有其接口电路,列选信号为SEL0,SEL1,SEL2,SEL3,经4线16线译码器输出16列,从左起为第一列,列选信号是由一个4位向量SEL[3..0]控制;行选信号为H0~H15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。

例如“0000”表示第0列,“0000000000000001”表示第一行的点亮。

由于列是由一个向量决定,而每一时刻的值只能有一个固定的值,因而只能使某一列的若干个点亮,因此就决定了只能用逐列扫描的方法。

三、实验内容(1)设计一个16×16的LED点阵显示器;(2)输出“晶”、“晶”三个汉字,在EDA试验箱上进行仿真调试。

eda第三次实验(10进制计数器数码管显示)

eda第三次实验(10进制计数器数码管显示)

--------顶层文件counter十进制计数并显示在LED上LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count ISPORT(CLK, RST, EN, LOAD :IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR (3 DOWNTO 0);COUT : OUT STD_LOGIC;LED7S:OUT STD_LOGIC_VECTOR (6 DOWNTO 0));END count;ARCHITECTURE BEHAVE OF count ISCOMPONENT CNT10 ISPORT(CLK, RST, EN, LOAD :IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR (3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);COUT : OUT STD_LOGIC);END COMPONENT CNT10;COMPONENT DECL7S ISPORT (A:IN STD_LOGIC_VECTOR (3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR (6 DOWNTO 0));END COMPONENT DECL7S;SIGNAL S:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1:CNT10PORT MAP (CLK=>CLK,RST=>RST,EN=>EN,LOAD=>LOAD,DATA=>DATA,DOUT=>S,COUT=>COUT);U2:DECL7S PORT MAP (A=>S,LED7S=>LED7S);END ARCHITECTURE BEHAVE;---------------------cnt10 10进制计数LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK, RST, EN, LOAD :IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR (3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);COUT : OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHAVE OF CNT10 ISBEGINPROCESS(CLK, RST, EN,LOAD)VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = '0' THEN Q := (OTHERS=>'0');ELSIF CLK'EVENT AND CLK= '1' THENIF EN= '1' THENIF (LOAD= '0') THEN Q :=DATA;ELSEIF Q<15 THEN Q := Q+1;ELSE Q := (OTHERS=>'0');END IF;END IF;END IF;END IF;IF Q="1010" THEN COUT<='1';ELSE COUT<='0'; END IF;DOUT<=Q;END PROCESS;END BEHAVE;---------------------驱动LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY DECL7S ISPORT (A:IN STD_LOGIC_VECTOR (3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR (6 DOWNTO 0));END;ARCHITECTURE ONE OF DECL7S ISBEGINPROCESS (A) BEGINCASE A ISWHEN "0000" => LED7S <= "1000000";WHEN "0001" => LED7S <= "1111001";WHEN "0010" => LED7S <= "0100100";WHEN "0011" => LED7S <= "0110000";WHEN "0100" => LED7S <= "0011001";WHEN "0101" => LED7S <= "0010010";WHEN "0110" => LED7S <= "0000010";WHEN "0111" => LED7S <= "1111000";WHEN "1000" => LED7S <= "0000000"; WHEN "1001" => LED7S <= "0010000"; WHEN "1010" => LED7S <= "0001000"; WHEN "1011" => LED7S <= "0000011"; WHEN "1100" => LED7S <= "1000110"; WHEN "1101" => LED7S <= "0100001"; WHEN "1110" => LED7S <= "0000110"; WHEN "1111" => LED7S <= "0001110"; WHEN OTHERS => NULL;END CASE;END PROCESS;END;生成门电路图波形仿真图引脚锁定。

eda10进制计数器实验报告

eda10进制计数器实验报告

eda10进制计数器实验报告1B计算机组成原理教学实验箱一台,排线若干。

2) PC机一台。

3、实验步骤与源程序l) 根据该模型机的指令系统,编写一段程序。

这里给出两个参考程序。

参考程序一:本程序从输入设备(数码开关)取入数据,保存在内存单元08,然后从08单元送到输出设备(LED数码管)进行显示。

然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。

每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。

)。

设计机器指令程序如下(机器码为十六进制数据)。

地址内容助记符说明00 00 IN;输入开关数据→R00120 STA [08H] ;R0→[08]02 08 ;地址03 30 OUT [08H] ;[08H] →BUS04 08 ;地址05 40 JMP [00H] ;00H→PC06 00 ;跳转地址参考程序二:本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED数码管)进行显示。

本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。

设计机器指令程序如下(机器码为十六进制数据)。

地址内容助记符说明00 00 IN;输入开关数据→R0,采集数据0110 ADD [0AH] ;R0+[0AH]→R0,输入数据与指定数据相加02 0A ;地址0320 STA [0BH] ;R0→[0B]04 0B ;地址05 30 OUT [0BH] ;[0BH] →BUS,输出显示06 0B ;地址07 40 JMP [00H] ;00H→PC08 00 ;跳转地址0A 01 ;加数,可自定0B ;求和结果保存在0B单元2) 按图1连接实验线路。

3) 写程序:对于本实验箱可以用两种方法来写入程序。

方法一:手动写入(1)先将机器指令对应的微代码正确地写入2816中,由于在实验1.6微程序控制器的组成与微程序设计实验中已将微代码写入E2PR0M芯片中,对照表2—2校验正确后就可使用。

(重庆科创职业学院)实验指导书 数字频率计的使用

(重庆科创职业学院)实验指导书   数字频率计的使用

实验五数字频率计的使用导读频率计数器简称频率计。

它是各类电子设备中振荡频率是否准确的重要检测设备之一,也是维修工作中必不可少的检测仪器。

下面介绍F1000L/F2600L/F3000L型多功能等精度频率计。

多功能等精度频率计使用说明书Ⅰ、概述本仪器是一个10H Z~1000MHz、2600 MHz、3000 MHz多功能等精度计数器。

特点:具有8位高亮度七段LED显示,4功能作业,低功耗线路设计,体积小,重量轻,高稳定性的晶体振荡器保证测量精度和全输入信号检查。

四功能:频率、周期、累计及自检。

全部功能是一个单块大规模微处理器完成的。

并有输入信号衰减选择功能。

仪器的开关位置、指示器、接线端子和全部资料都在这本手册中提供。

Ⅱ、技术条件下面列出有关的技术条件:1、测量方式:频率测量A通道:量程:10 Hz~10 MHz直接计数10 MHz ~100 MHz按比例计数分辨率:直接计数:1 Hz、10 Hz、100 Hz任选比例计数:10 Hz、100 Hz、1000Hz任选闸门时间:0.01s 、0.1s 、1s精度:±1计数值±基准时间误差×被测频率周期测量:输入:A通道量程:10Hz-10 MHz分辨率:10-7S,10-8S,10-9S任选精度:±1计数值±基准时间误差×被测周期累计测试:输入:A通道量程:10Hz-10 MHz分辨率:±1个计数脉冲自检显示器:八位数码管0-9字符同时反复显示。

2、输入特性通道A输入灵敏度:10MHz量程:10Hz-8MHz 20mVrms8MHz -10MHz 30mVrms100MHz量程:10MHz- 8MHz 20mVrms80MHz -100MHz 30mVrms 衰减:×1,×20固定滤波:低通,100KHz、-3dB阻抗:约1MΩ(少于35pF)最大安全电压:250V(DV+ACrms)(ATT置×20)通道B:输入灵敏度:20 mVrms阻抗:约50Ω最大安全电压:3V3、时基:时基频率:10短期稳定度:±3×10-9/秒长期稳定度:±2×10-5/月温度系数:±1×10-5,0oC~40℃线电压:每改变±10%,时基频率变化±1×10-74、一般情况显示器:8位,0.39寸红色高亮度LED显示并带有十进小数点,门,溢出,KHz,MHz,us指示。

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1.6个数码管动态扫描显示驱动2.按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3.用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。

要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。

实验目的:1)学会看硬件原理图,2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机,2)硬件实验箱,3)Quartus II软件开发平台。

1.打开Quartus II ,连接实验箱上的相关硬件资源,如下图1所示。

2.建立新文件,选择文本类型或原理图类型。

3.编写程序。

4.编译5.仿真,加载程序到芯片,观察硬件输出结果(数码管显示)6.结果正确则完成。

若结果不正确,则修改程序,再编译,直到正确。

模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时,实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

End one;
LED显示的十进制计数器
1.根据电路功能分析实体端口,同时也可分析出结构 体中需要的信号。 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity count10 is
port(clk:in std_logic;
End entity;
2.抓住电路功能要点,一步一步充实电路功能描述 Architecture one of count10 is signal q:std_logic_vector(3 downto 0); begin process(clk)
If clk’event and clk=‘1’ then 计数功能 q<=q+1; End if; end process;
Case q is When "0000" => s <="1111110"; When "0001" => s <="0000110"; When "0010" => s <="1101101"; When "0011" => s <="1111001"; When "0100" => s <="0110011"; When "0101" => s <="1011011"; When "0110" => s <="1011111"; When "0111" => s <="1110000"; When "1000" => s <="1111111"; When "1001" => s <="1110011"; When others=>s<="0000000"; End case;
Lபைடு நூலகம்D显示的十进制计数器
1.根据电路功能分析实体端口,同时也可分析出结构 体中需要的信号。 Library ieee; Use ieee.std_logic_1164.all; Entity count10 is port(clk:in std_logic;
s:out std_logic_vector(6 downto 0));
s:out std_logic_vector(6 downto 0));
End entity;
2.抓住电路功能要点,一步一步充实电路功能描述 Architecture one of count10 is signal q:std_logic_vector(3 downto 0); 十进制计数器,计数最 begin 大不超过9即“1001” process(clk) IF q="1001" then q<="0000"; Else If clk’event and clk=‘1’ then 计数功能 q<=q+1; End if; End if; --显示部分见下页 end process; End one;
相关文档
最新文档