60进制计数器设计(VHDL)

合集下载

EDA-六十进制计数器的VHDL设计概要

EDA-六十进制计数器的VHDL设计概要

THEN
3.1.3 VHDL的数据类型
1. BIT:位数据类型,只有两个取值:‘0’和‘1’。 2. BIT_VECTOR( ): 位矢量数据类型。 3. STD_LOGIC:标准逻辑位数据类型。有9种不同的取值: 4. STD_LOGIC_VECTOR():标准逻辑位矢量数据类型。
STD_LOGIC所定义的9种数据的含义是:
数据类型时,需要使用库和程序包,具体格式如下所示:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
3.2 VHDL的完整结构
图2-2 D触发器
D触发器的功能:在时钟信号上升沿到来的时候,输 出跟随输入变化,否则,输出保持不变。
3.2.1 时钟上升沿检测表式
时钟上升沿的检测有两种表达方式:
1. CLK’EVENT AND CLK = ‘1’
2. RISING_EDGE(CLK)
3.2.2 D触发器的VHDL设计
库与程序包声明 标准逻辑位
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ; 库 ENTITY DFF1 IS 程序包 PORT (CLK : IN STD_LOGIC ; 实体 D : IN STD_LOGIC ; Q : OUT STD_LOGIC );
END DFF1;
3.3 六十进制计数器的VHDL设计
六十进制BCD码计数器的源程序:
实体名
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt60 IS PORT (clk, clr: IN STD_LOGIC; ten, one: DOWNTO 0 ); OUT STD_LOGIC_VECTOR(3

60进制计数器设计(VHDL)

60进制计数器设计(VHDL)

《EDA技术》课程实验报告学生姓名:黄红玉所在班级:电信100227指导教师:高金定老师记分及评价:一、实验名称实验6:60进制计数器设计二、任务及要求【大体部份】4分一、在QuartusII平台上,采用文本输入设计方式,通过编写VHDL语言程序,完成60进制计数器的设计并进行时序仿真。

二、设计完成后生成一个元件,以供更高层次的设计挪用。

3、实验箱上选择适当的模式进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。

【发挥部份】1分在60进制基础上设计6进制计数器,完成时序仿真。

三、实验程序library ieee;use jinzhi60 isport(clk:in std_logic;co:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0));end entity jinzhi60;architecture art of jinzhi60 isbeginco<='1'when(qh="0101"and ql="1001")else'0';process(clk)beginif(clk='1')thenif(ql=9)thenql<="0000";if(qh=5)thenqh<="0000";elseqh<=qh+1;end if;elseql<=ql+1;end if;end if;end process;end architecture art;四、仿真及结果分析由以上代码编译,仿真,取得一下时序仿真波形图。

用VHDL语言实现一个六十进制计数器,该计数器有计数使能端en,清零端clr和进位输出端co。

vhdl数字时钟设计精选全文

vhdl数字时钟设计精选全文

可编辑修改精选全文完整版数字时钟设计一、题目分析1、功能介绍1)具有时、分、秒计数显示功能,以24小时循环计时。

2)时钟计数显示时有LED灯的花样显示。

3)具有调节小时、分钟及清零的功能。

4)具有整点报时功能。

2、总体方框图3、性能指标及功能设计1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。

2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。

我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。

3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。

可以根据我们自己任意时间的复位。

4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。

产生“滴答.滴答”的报警声音。

5)LED灯在时钟显示时有花样显示信号产生。

即根据进位情况,LED不停的闪烁,从而产生“花样”信号。

二、选择方案1、方案选择方案一:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。

采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。

显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。

方案二:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。

采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。

显示:小时采用24进制,而分钟和秒均60进制。

终上所述,考虑到试验时的简单性,故我选择了方案二。

三、细化框图根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:四、编写程序、仿真和分析1、秒计数器1)VHDL 语言描述程序见附录 2)秒计数器的仿真波形图3)波形分析数字时钟控制单元 时调整 分调整使能端信号 CLK 信号时显示 分显示 秒显示24进制 60进制 60进制LED 显示整点报花样显利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enmin=1;reset作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。

60进制计数器VHDL实验报告

60进制计数器VHDL实验报告
VHDL 语言的英文全名是 Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言.HDL 发展的技术源头是: 在 HDL 形成发展之前,已有了许多程序设计语言,如汇 编,C,Pascal,Fortran,Prolog 等.这些语言运行在不同硬件平台和不同的操作 环境中,它们适合于描述过程和算法,不适合作硬件描述.CAD 的出现,使人们可 以利用计算机进行建筑,服装等行业的辅助设计,电子辅助设计也同步发展起来. 在从 CAD 工具到 EDA 工具的进化过程中,电子设计工具的人机界面能力越来越高. 在利用 EDA 工具进行电子设计时,逻辑图,分立电子原件作为整个越来越复杂的 电子系统的设计已不适应.任何一种 EDA 工具,都需要一种硬件描述语言来作为 EDA 工具的工作语言.这些众多的 EDA 工具软件开发者,各自推出了自己的 HDL 语 言.
(2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路 , 也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或 者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯 性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强 大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的 数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的 自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述 , 它可以从一个模拟器移植到另一个模拟器上、从一个综合器 移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执 行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时, 设计人员并不需要首先考虑选择进 行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的 优化, 而不需要考虑其他的问题。当硬件电路的设计描述完成以后 ,VHDL 语言允许采用多种不同的器件结构来实现。

用VHDL编写60进制计数器

用VHDL编写60进制计数器

用VHDL编写60进制计数器1.用VHDL设计60进计数器。

设计一个BCD码60进计数器。

要求实现同步,异步两种情况,且规定个位显示0~9,十位显示0~5,均用4位二进制数表示。

用VHDL语言描述中小规模集成电路74LS169。

VHDL的源程序如下:(1):同步,文件名为bcd60countLIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bcd60count isport(clk,bcd1wr,bcd10wr,cin: in std_logic;co: out std_logic;datain: in std_logic_vector(3 downto 0);bcd1p: out std_logic_vector(3 downto 0);bcd10p: out std_logic_vector(2 downto 0));end bcd60count;architecture behave of bcd60count issignal bcd1n: std_logic_vector(3 downto 0);signal bcd10n: std_logic_vector(2 downto 0);beginbcd1p<=bcd1n;bcd10p<=bcd10n;kk1: process(clk,bcd1wr)beginif (bcd1wr='1') thenbcd1n<=datain;elsif(clk'event and clk='1') thenif (cin='1') thenif(bcd1n="1001" ) thenbcd1n<="0000";elsebcd1n<=bcd1n+'1';end if;end if;end if;end process kk1;kk2: process(clk,bcd10wr)beginif (bcd10wr='1') thenbcd10n<=datain(2 downto 0);elsif(clk'event and clk='1') thenif(cin='1') and (bcd1n="1001") thenif(bcd10n="101") thenbcd10n<="000";elsebcd10n<=bcd10n+'1';end if;end if;end if;end process kk2;kk3: process(bcd10n,bcd1n,cin)beginif(cin='1' and bcd1n="1001" and bcd10n="101") then co<='1';elseco<='0';end if;end process kk3;end behave;(2)异步程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cou60 isport(clk,reset,cin : in std_logic;co : out std_logic;bcd1p : out std_logic_vector(3 downto 0);bcd10p : out std_logic_vector(2 downto 0)); end cou60; architecture behave of cou60 issignal bcd1n: std_logic_vector(3 downto 0);signal bcd10n: std_logic_vector(2 downto 0);beginbcd1p<=bcd1n;bcd10p<=bcd10n;kk1: process(clk)beginif(clk'event and clk='1') thenif (reset='0') thenbcd1n<="0000";elsif (cin='1') thenif(bcd1n="1001" ) thenbcd1n<="0000";elsebcd1n<=bcd1n+'1';end if;end if;end if;end process kk1;kk2: process(clk)beginif(clk'event and clk='1') thenif (reset='0') thenbcd10n<="101";elsif(cin='1') and (bcd1n="1001") thenif(bcd10n="001") thenbcd10n<="101";elsebcd10n<=bcd10n+'1';end if;end if;end if;end process kk2;kk3: process(bcd10n,bcd1n,cin)beginif(cin='1' and bcd1n="1001" and bcd10n="001") then co<='1';elseco<='0';end if;end process kk3;end behave;。

数电-课程设计-60进制计数器

数电-课程设计-60进制计数器

表1 十进制计数器功能表CP RD` LD` EP ET 工作状态×0 ××置零↑ 1 0 ××预置数× 1 1 0 1 保持× 1 1 ×0 保持↑ 1 1 1 1 计数连接方式如图:图2 十进制计数器(个位)2、十进制计数器(十位)电路图3 十进制计数器(十位)3、时钟脉冲电路图4 时钟脉冲电路4、置数电路图5 置数电路5、进位电路图6 进位电路6、译码显示电路图7 译码显示电路三、绘制原理图1、完整原理图图7 计数器原理图2、选定仪器列表仪器名称型号数量用途同步十进制计数器74LS160 2片极联构成60进制计数器与门与非门非门74LS21D74LS00D74LS04D各1个辅助设计构成其他计数器共阴极显示器DCD-HEX 2只显示数字计数电压源1个提供脉冲电压表二原理图仪器列表四、测试方案测试步骤:1)进入Multisim7界面图8 软件页面2)右击空白处,选择放置元件,进入元器件选择区,选择要放置的元件,然后单击好。

图9 放置元件3)放置好各种器件之后,即可进行线路连接,同时标明所需参数值。

设置元器件的参数时,用鼠标双击,弹出属性对话框,分别给元件赋值,并设置名称标号。

图10 元器件属性图4)确认电路无误后,即可单击仿真按钮,实现对电路的仿真工作。

5)观察结果看是否与理论分析的预测结果相同。

五、测试验证结果与分析1、验证结果以下两个仿真结果分别是计数器计数的仿真起点00和仿真终点59,之后计数器会自动恢复原来的00起点继续进行循环计数,并且进位输出灯会在59时发光。

图11 60进制计数器起点00 图12 60进制计数器终点592、理论分析本计数器由两个10进制计数器构成60进制计数器的接线图,右边的10进制计数器作为个位,左边的10进制计数器作为十位。

输入端全部接地,计数开始循环一周后通过置位法自动进行归00,之后再继续循环计数。

vhdl实验报告

vhdl实验报告

专用集成电路实验报告13050Z011305024237X德文实验一开发平台软件安装与认知实验实验内容1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9.2软件平台上完成设计电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。

下载芯片选择Xilinx公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。

2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。

源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-- Unment the following lines to use the declarations that are-- provided for instantiating Xilinx primitive ponents.--library UNISIM;--use UNISIM.Vponents.all;entity ls74138 isPort ( g1 : in std_logic;g2 : in std_logic;inp : in std_logic_vector(2 downto 0);y : out std_logic_vector(7 downto 0));end ls74138;architecture Behavioral of ls74138 isbeginprocess(g1,g2,inp)beginif((g1 and g2)='1') thencase inp iswhen "000"=>y<="00000001";when "001"=>y<="00000010";when "010"=>y<="00000100";when "011"=>y<="00001000";when "100"=>y<="00010000";when "101"=>y<="00100000";when "110"=>y<="01000000";when "111"=>y<="10000000";when others=>y<="00000000";end case;elsey<="00000000";end if;end process;end Behavioral;波形文件:生成元器件及连接电路思考:有程序可以看出,定义了三个输入端,一个输出端。

60进制计数器课程设计

60进制计数器课程设计

60进制计数器课程设计一、课程目标知识目标:1. 学生能够理解60进制计数器的概念,掌握其与十进制的转换方法。

2. 学生能够运用60进制计数器进行简单的加、减运算。

3. 学生了解60进制在实际生活中的应用,如时间、角度等。

技能目标:1. 学生能够独立完成60进制与十进制的转换。

2. 学生能够运用所学知识解决实际问题,如将时间、角度等转换为60进制表示。

3. 学生通过小组合作,培养团队协作能力和沟通能力。

情感态度价值观目标:1. 学生对60进制计数器产生兴趣,培养对数学的热爱。

2. 学生在探究过程中,养成独立思考、勇于尝试的良好习惯。

3. 学生通过学习,认识到数学与生活的紧密联系,增强学以致用的意识。

课程性质:本课程为数学学科的一节实践探究课,旨在帮助学生掌握60进制计数器的相关知识,提高学生的实际操作能力和解决问题的能力。

学生特点:四年级学生具有一定的数学基础,对新鲜事物充满好奇,喜欢动手操作,但注意力容易分散。

教学要求:教师需结合学生的特点,设计生动有趣的教学活动,引导学生积极参与,鼓励学生自主探究和合作交流,确保每位学生都能在课堂上有所收获。

同时,注重培养学生的情感态度价值观,使学生在学习过程中形成正确的价值观和积极的学习态度。

通过分解课程目标为具体的学习成果,为后续的教学设计和评估提供依据。

二、教学内容本节课依据课程目标,结合教材第四章《有趣的计数器》相关内容,组织以下教学大纲:1. 引言:介绍60进制计数器的基本概念,引导学生思考其在生活中的应用,如时间、角度等。

2. 知识讲解:a. 讲解60进制计数器与十进制的区别与联系。

b. 详细介绍60进制与十进制的转换方法。

c. 通过实例,展示60进制在时间、角度等方面的应用。

3. 实践操作:a. 学生独立完成60进制与十进制的转换练习。

b. 学生分组讨论,解决实际问题,如将时间、角度等转换为60进制表示。

4. 拓展延伸:a. 探讨60进制在生活中的其他应用,激发学生思考。

VHDL数字秒表设计

VHDL数字秒表设计

VHDL语言课程设计-秒表设计一、设计实验目的:在MAX+plusII软件平台上,熟练运用VHDL语言,完成数字时钟设计的软件编程、编译、综合、仿真,使用EDA实验箱,实现数字秒表的硬件功能。

二、设计实验说明及要求:1、数字秒表主要由:分频器、扫描显示译码器、一百进制计数器、六十进制计数器(或十进制计数器与6进制计数器)、十二进制计数器(或二十四进制计数器)电路组成。

在整个秒表中最关键的是如何获得一个精确的100H Z计时脉冲,除此之外,数字秒表需有清零控制端,以及启动控制端、保持保持,以便数字时钟能随意停止及启动。

2、数字秒表显示由时(12或24进制任选)、分(60进制)、秒(60进制)、百分之一秒(一百进制)组成,利用扫描显示译码电路在八个数码管显示。

3、能够完成清零、启动、保持(可以使用键盘或拨码开关置数)功能。

4、时、分、秒、百分之一秒显示准确。

三、我的设计思路:1、四个十进制计数器:用来分别对百分之一秒、十分之秒、秒和分进行计数;2、两个6进制计数器:用来分别对十秒和十分进行计数;3、一个24进制计数器,用来对小时进行计数;3、分频率器:用来产生100Hz的计数脉冲;4、显示译码器:完成对显示译码的控制。

四、设计过程:1.分频器:由10MHz变为100Hz,10MHz的周期是10的(-7)次方,而100Hz 的周期是10的(-2)次方,而且方波是高低相间,只有高电平有效,所以100Hz 的周期需要取一半,即0.02秒,这样算出的分频倍数就是50000分频器代码:将10MHz脉冲变成100Hz程序:library ieee;use ieee.std_logic_1164.all;entity fenpin isport(clr,clk: in bit;q: buffer bit);end fenpin;architecture a of fenpin issignal counter:integer range 0 to 49999;beginprocess(clr,clk)beginif (clk='1' and clk'event) thenif clr='1' thencounter<=0;elsif counter=49999 thencounter<=0;q<= not q;elsecounter<=counter+1;end if;end if;end process;end a;分频器的仿真图:2.十进制计数器:原理为加法计数器,从0加到9,计到10个数时由cout进位程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity c10 isport(clr,start,clk: in bit;daout: out std_logic_vector(3 downto 0)); end c10;,architecture a of c10 issignal temp:std_logic_vector(3 downto 0); begindaout<=temp;process(clk,clr)beginif clr='1' thentemp<="0000";cout<='0';elsif (clk'event and clk='1') thenif start='1' thenif temp>="1001" thentemp<="0000";cout<='1';elsetemp<=temp+1;cout<='0';end if;end if;end process;end a;十进制计数器仿真图:3.六进制计数器:原理为加法计数器,从0 加到5计到第六个数时由cout进位。

vhdl实验报告--数字钟

vhdl实验报告--数字钟

VHDL实验报告一、实验目的1、设计一个24小时制数字钟,要求能显示时,分,秒,并且可以手动调整时和分。

2、通过复杂实验,进一步加深对VHDL语言的掌握程度。

二、实验原理数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分为模60计数器,小时是模24计数器,分别产生3位BCD码。

BCD码经译码,驱动后接数码管显示电路。

秒模60计数器的进位作为分模60计数器的时钟,分模60计数器的进位作为模24计数器的时钟。

为了实现手动调整时间,在外部增加了setm(调整分),seth(调整时)按键,当这两个按键为低电平时,电路正常计时,当为高电平时,分别调整分,时。

同时在外部还增加了一个清零按键clr.和消抖动电路。

三、实验步骤1、单元模块设计部分1)消抖动电路关键部分signal key_in1,key_in2:std_logic:='0';beginprocess(clk,key_in)beginif clk'event and clk='1' thenkey_in1<=key_in;key_in2<=key_in1;if key_in='1' and key_in1='1' and key_in2='1' then key_out<='1';else key_out<='0';end if;2) 模60计数器程序关键部分:signal md_temp,mg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr)beginif clr='1' thenmd_temp<="0000"; mg_temp<="0000";elsif set='1' thenmd_temp<=setl; mg_temp<=seth;elsif clk'event and clk='1' thenif md_temp="1001" thenmd_temp<="0000";mg_temp<=mg_temp+'1';else md_temp<=md_temp+'1';if md_temp="1001" and mg_temp="0101" thenmd_temp<="0000";mg_temp<="0000";2、模24计数器程序关键部分signal hd_temp,hg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr,set,setl,seth)isbeginif set='1' then hd_temp<=setl; hg_temp<=seth;elsif clr='1' then hd_temp<="0000"; hg_temp<="0000";elsif clk'event and clk='1' thenif hg_temp="0010" and hd_temp="0011" thenhd_temp<="0000"; hg_temp<="0000";elsif hd_temp="1001" thenhg_temp<=hg_temp+'1' hd_temp<="0000";else hd_temp<=hd_temp+'1';end if;end if;end process ;3、清零和调时部分显示部分关键程序process (sd,sg,md,mg,hd,hg)begincase sd iswhen "0000" =>sl<="1111110";when "0001" =>sl<="0110000";when "0010" =>sl<="1101101";when "0011" =>sl<="1111001";when "0100" =>sl<="0110011";when "0101" =>sl<="1011011";when "0110" =>sl<="1011111";when "0111" =>sl<="1110000";when "1000" =>sl<="1111111";when "1001" =>sl<="1111011";when others =>sl<="0000000";end case;if clk_g'event and clk_g='1' thenif sel="101" thensel<="000";else sel<=sel+'1';end if;end if;process(sel,sd,sl,sg,sh,md,ml,mg,mh,hd,hl,hg,hh)begincase sel iswhen"000"=>led<=sl;led_which<=sd;when"001"=>led<=sh;led_which<=sg;when"010"=>led<=ml;led_which<=md;when"011"=>led<=mh;led_which<=mg;when"100"=>led<=hl;led_which<=hd;when"101"=>led<=hh;led_which<=hg;when others=>led<="0000000";led_which<="0000";end case;4、顶层文件关键程序port(clk,clk_g:in std_logic;-----clk_g是用在数码管显示里面的信号clr: in std_logic;------clr=1时清零setm,seth:in std_logic;---------setm为1时调分,seth为1时调时setd,setg:in std_logic_vector(3 downto 0);----调整时间的时候,setd调整的是低位setg 调整高位led:out std_logic_vector(6 downto 0);sel_out: out std_logic_vector(2 downto 0);led_which: out std_logic_vector(3 downto 0));---输出的是秒分时的哪一个beginu1:de_shake port map (clk=>clk,key_in=>clr,key_out=>clro);u2:de_shake port map (clk=>clk,key_in=>setm,key_out=>setmo);u3:de_shake port map (clk=>clk,key_in=>seth,key_out=>setho);u4:s60 port map (clk=>clk,clr=>clro,sd=>sdl,sg=>sgh,fenmaichong=>fenmaichong o);u5:m60 port map (clk=>fenmaichongo,clr=>clro,md=>mdl,mg=>mgh,xiaoshimaichong=> xiaoshimaichongo,setl=>setd,seth=>setg,set=>setmo);u6:h24 port map (clk=>xiaoshimaichongo,clr=>clro,hd=>hdl,hg=>hgh,set=>setho,se tl=>setd,seth=>setg);u7:led_xs port map (clk_g=>clk_g,sd=>sdl,sg=>sgh,md=>mdl,mg=>mgh,hd=>hdl, hg=>hgh,led=>led,sel_out=>sel_out,led_which=>led_which);四、实验结果及分析本设计,满足了本次试验设计的任务要求,能显示时分秒,并且可以手动调节分和时。

六十进制计数器设计(EDA)

六十进制计数器设计(EDA)

六进制vhdl语言设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt6 ISPORT(CLK,CLRN,ENA,LDN:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END cnt6;ARCHITECTURE ONE OF cnt6 ISSIGNAL CI:STD_LOGIC_VECTOR (3 DOWNTO 0):="0000"; BEGINPROCESS (CLK,CLRN,ENA,LDN,CI)BEGINIF CLRN='0' THEN CI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF LDN='0' THEN CI<=D;ELSIF ENA='1' THENIF CI<5 THEN CI<=CI+1;ELSE CI<="0000";END IF;END IF;END IF;Q<=CI;END PROCESS;COUT<=CI(0) AND CI(2);END ONE;十进制vhdl语言设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 ISPORT(CLK,CLRN,ENA,LDN:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END cnt10;ARCHITECTURE ONE OF cnt10 ISSIGNAL CI:STD_LOGIC_VECTOR (3 DOWNTO 0):="0000"; BEGINPROCESS (CLK,CLRN,ENA,LDN,CI)BEGINIF CLRN='0' THEN CI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF LDN='0' THEN CI<=D;ELSIF ENA='1' THENIF CI<9 THEN CI<=CI+1;ELSE CI<="0000";END IF;END IF;END IF;Q<=CI;END PROCESS;COUT<=CI(0) AND CI(3);END ONE;分别把上面程序生成符号文件画如下原理图:波形仿真图如下:。

60进制计数器设计

60进制计数器设计

级联。

4)两个芯片间的级联。

2.六十进制计数器设计描述2.1设计的思路1)芯片介绍:74LS192 为加减可逆十进制计数器,CPU端是加计数器时钟信号,CPD是减计数时钟信号RD=1时无论时钟脉冲状态如何,直接完成清零功能。

RD=0,LD=0 时,无论时钟脉冲状态如何,输入信号将立即被送入计数器的输出端,完成预置数功能。

2)十进制可逆计数器74LS192引脚图管脚及功能表3)74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下所示:图5-4 74LS192的引脚排列及逻辑符号(a)引脚排列(b) 逻辑符号图中:为置数端,为加计数端,为减计数端,为非同步进位输出端,为非同步借位输出端,P0、P1、P2、P3为计数器输入端,为清除端,Q0、Q1、Q2、Q3为数据输出端。

输入输出MR P3 P2 P1 P0 Q3 Q2 Q1 Q01 ×××××××0 0 0 00 0××d c b a d c b a0 11××××加计数1 1 ××××减计数4)利用两片74ls192分别作为六十进制计数器的高位和低位,分别与数码管连接。

把其中的一个芯片连接构成十进制计数器,另一个通过一个与门器件构成一个六进制计数器。

5)如下图:2.2设计的实现1)两芯片之间级联;把作高位芯片的进位端与下一级up端连接这是由两片74LS192连接而成的60进制计数器,低位是连接成为一个十进制计数器,它的clk端接的是低位的进位脉冲。

高位接成了六进制计数器。

当输出端为0101 的时候在下个时钟的上升沿把数据置数成0000 这样就形成了进制计数器,连个级联就成为了60进制计数器,分别可以作为秒和分记时。

2)方案的实现:使用200HZ时钟信号作为计数器的时钟脉冲。

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告VHDL实验报告班级:电子学号:姓名:2014/5/23Experiment 1 两位二进制数的大小比较器一、实验目的:(1)熟悉QuartusII的开发环境、熟练掌握编程开发流程。

(2)学习VHDL的基本语法及编程设计。

二、实验内容:数值比较器设计三、实验要求:(1)熟练掌握QuartusII开发环境下对可编程逻辑器件进行程序化设计的整套流程;2)设计输入使用插入语言模板(Insert Template); ((3)在QuartusII开发环境下对设计程序进行时序仿真,将生成的配置文件下载到实验板,进行最终的实物测试验证。

四、实验原理:根据两位二进制数的大小得到对应的比较结果,其电路示意图及电路特性表为: 比较器特性表A B In_s In_l In_e 比较器电路示意图YsYe YlY A > B × × × 0 0 1A[3:0] Yl Number B[3:0] A < B × × × 1 0 0 Ye A = B 0 1 0 0 0 1 In_sYs Comparer In_l A = B 1 0 0 1 0 0 In_e A = B 0 0 1 0 1 0 A = B 0 0 0 × × × A = B × 1 1 × × × A = B 1 × 1 × × × A = B 1 1 × × × ×五、程序编写、调试及仿真(芯片型号:MAX?系列EPM1270T144C5) (1)程序编写:library ieee;use ieee.std_logic_1164.all;2entity Vhdl1 isport(a,b:in std_logic_vector(3 downto 0);ins,inl,ine: in std_logic;ys,ye,yl: out std_logic);end Vhdl1;architecture one of Vhdl1 issignal temps,tempe:std_logic; beginys<=temps;ye<=tempe;yl<=temps nor tempe;process(a,b,ine)beginif (a=b and ine='1')thentempe<='1';elsetempe<='0';end if;end process;process(a,b,ins)beginif(a<b) thentemps<='1';elsif(a=b and ins='1') then temps<='1';elsetemps<='0';end if;end process;end one;(2)功能仿真:3(3)芯片引脚设定:(4)适配下载结果六、结果分析本实验实现了两位二进制数的比较。

EDA实验报告

EDA实验报告
cin: in std_logic;
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语言源程序检查和修改。

VHDL程序设计教程习题解答

VHDL程序设计教程习题解答

VHDL程序设计教程习题参考解答第1章思考题解答1.什么是VHDL?简述VHDL的发展史。

答:VHDL是美国国防部为电子项目设计承包商提供的,签定合同使用的,电子系统硬件描述语言。

1983年成立VHDL语言开发组,1987年推广实施,1993年扩充改版。

VHDL 是IEEE标准语言,广泛用于数字集成电路逻辑设计。

2.简述VHDL设计实体的结构。

答:实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。

根据IEEE标准,实体组织的一般格式为:ENTITY 实体名 IS[GENERIC(类型表);] --可选项[PORT(端口表);] --必需项实体说明部分; --可选项[BEGIN实体语句部分;]END [ENTITY] [实体名];3.分别用结构体的3种描述法设计一个4位计数器。

答:用行为描述方法设计一个4位计数器如下,其它描述方法,读者可自行设计。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY countA ISPORT (clk,clr,en:IN STD_LOGIC;Qa,qb,qc,qd:OUT STD_LOGIC);END countA;ARCHITECTURE example OF countA ISSIGNAL count_4:STD_LOGIC_vector (3 DOWNTO 0);BEGINQa <= count_4(0);Qb <= count_4(1);Qc <= count_4(2);Qd <= count_4(3);PROCESS (clk,clr)BEGINIF (clr = '1' ) THENCount_4 <= "0000";ELSIF (clk'EVENT AND clk = '1' ) THENIF (en = '1' ) THENIF (count_4 = "1111") THENcount_4 <= "0000";ELSEcount_4 <= count_4+ '1';END IF;END IF;END IF;END PROCESS;END example;第2章思考题解答1.什么叫对象?对象有哪几个类型?答:在VHDL语言中,凡是可以赋于一个值的客体叫对象(object)。

基于VHDL的数字时钟设计

基于VHDL的数字时钟设计

目录1 概述.........................................................................错误!未定义书签。

1.1数字时钟的工作原理 (1)1.2设计任务 (1)2 系统总体方案设计 (2)3 VHDL模块电路设计 (3)3.1模块实现 (3)3.1.1分频模块pinlv (3)3.1.2按键去抖动模块qudou (5)3.1.3按键控制模块self1 (6)3.1.4秒、分六十进制模块cantsixty (7)3.1.5时计数模块hourtwenty (9)3.1.6秒、分、时组合后的模块 (9)3.1.7数码管显示模块 (10)3.2数字时钟的顶层设计原理图 (13)3.3系统仿真与调试 (14)结束语 (16)参考文献 (17)致谢 (18)附录源程序代码 (19)1 概述1.1数字时钟的工作原理数字钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。

秒计数器的计数时钟CLK为1Hz的标准信号,可以由晶振产生的50MHz信号通过分频得到。

当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号,每一秒钟发出一个中断给CPU,CPU采用NIOS,它响应中断,并读出小时、分、秒等信息。

CPU对读出的数据译码,使之动态显示在数码管上。

1.2 设计任务设计一个基于VHDL的数字时钟,具体功能要求如下:1.在七段数码管上具有时--分--秒的依次显示。

2.时、分、秒的个位记满十向高位进一,分、秒的十位记满五向高位进一,小时按24进制计数,分、秒按60进制计数。

3.整点报时,当计数到整点时扬声器发出响声。

4.时间设置:可以通过按键手动调节秒和分的数值。

此功能中可通过按键实现整体清零和暂停的功能。

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

《EDA技术》课程实验报告
学生姓名:黄红玉
所在班级:电信100227
指导教师:高金定老师
记分及评价:
一、实验名称
实验6:60进制计数器设计
二、任务及要求
【基本部分】4分
1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成60进制计数器的设计并进行时序仿真。

2、设计完成后生成一个元件,以供更高层次的设计调用。

3、实验箱上选择恰当的模式进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。

【发挥部分】1分
在60进制基础上设计6进制计数器,完成时序仿真。

三、实验程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jinzhi60 is
port(clk:in std_logic;
co:out std_logic;
qh:buffer std_logic_vector(3 downto 0);
ql:buffer std_logic_vector(3 downto 0));
end entity jinzhi60;
architecture art of jinzhi60 is
begin
co<='1'when(qh="0101"and ql="1001")else'0';
process(clk)
begin
if(clk='1')then
if(ql=9)then
ql<="0000";
if(qh=5)then
qh<="0000";
else
qh<=qh+1;
end if;
else
ql<=ql+1;
end if;
end if;
end process;
end architecture art;
四、仿真及结果分析
由以上代码编译,仿真,得到一下时序仿真波形图。

用VHDL语言实现一个六十进制计数器,该计数器有计数使能端en,清零端clr和进位输出端co。

档en=1时,计数器正常计数;当clr=1时,计数器清零。

最后在试验箱上仿真,数码管显示了0到59,则60进制计数器完成。

五、硬件验证
1、选择模式:模7
2、引脚锁定情况表:
六、小结
这次实验仿真了六十进制计数器运用到了QuartusII软件。

通过学习设计,初步掌握了QuartusII软件的使用并且深入地体会到VHDL语言的广泛应用。

这次实验让我感觉收获颇多,一方面培养了我用自己的专业知识解决问题的能力,进一步理解了理论必须运用于实际的重要性,加深了我对这门课程及专业知识的理解,对以后的工作学习生活都有很大的意义;另一方面我也发现自己很多的不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固,这都是自己以后需要深入学习和克服的问题。

在今后的学习中,我会发挥积极主动的精神,把所学知识与实践结合起来,努力掌握Quartus II设计软件和VHDL设计语言的使用方法。

相关文档
最新文档