VHDL语音60进制计数器

合集下载

VHDL复习

VHDL复习

百度题库VHDL复习资料1.一个完整的VHDL程序,一般有哪几部分组成,它们分别描述的是什么?答:、VHDL程序的基本结构由(库)、(程序包)、(实体)、(结构体)和(配置)组成。

2.IF THEN语句、case when语句、with select语句各是什么类型语句,顺序语句必须放在什么地方?答:IF THEN语句与case when语句是顺序语句,with select语句是并行语句,顺序语句必须放在进程中。

3.结构体中常用的功能描述方式有几种?答:1)行为描述方式 2)数据流描述方式 3)结构化描述方式4.QuartusⅡ是CPLD/FPGA集成开发软件,基于QuartusⅡ软件进行设计开发,包括几个步骤,分别是什么?答:步骤分别是:1)新建项目 2)设计输入 3)分析综合及设计编译4)时序仿真 5)引脚分配及下载配置5.1987VHDL标准中规定标识符由什么组成,有什么具体要求?答:标识符可以由英文字母,数字,下划线“-”等组成选择填空1.在VHDL语言中,下列对时钟边沿检测描述中,错误的是( D )。

A.if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD.if clk’stable and not clk = ‘1’ then2.一个项目的输入输出端口是定义在( A )。

A.实体中B.结构体中C.任何位置D.进程体3. 下列语句中,不属于并行语句的是( B )。

A.进程语句B.CASE语句C.元件例化语句D.WHEN…ELSE…语句4.描述项目具有逻辑功能的是( B )。

A.实体B.结构体C.配置D.进程5.关键字ARCHITECTURE定义的是( A)。

A.结构体B.进程C.实体D.配置6.关键字ARCHITECTURE定义的是( A )。

A.结构体B.进程C.实体D.配置7.QUARTESII中编译VHDL源程序时要求( A )。

基于VHDL的秒表

基于VHDL的秒表

内容1、总体设计要求具有启动停止功能;计时器能显示0.01s的时间;计时器最长计时时间为24h;具有复位功能在任何情况下按复位键秒表无条件清零;2、系统功能描述本次课程设计通过VHDL做的秒表主要有以下的功能:(1)在下载到实验箱后,打开开始开关才能开始计时;(2)在开始开关打开后,能够通过另一个开关进行暂停;(3)再按下清零键后能够清零,并且是在任何条件下都能清零;(4)能够精确到0.01秒,更加精确的计时3、系统设计方案论述,画出顶层电路图及功能分割图,并说明之间的联系或功能。

先是将100进制计数器、60进制计数器、60进制计数器和24进制计数器连接,将100进制计数器的进位接到60进制计数器的CLK输入端上,然后将60进制的进位连接到另一个60进制的CLK输入端上,然后将已将连接进位的60进制计数器的几位连接到24进制计数器的输入端口CLK上,24进制的仅为端悬空,这就是秒表的主体。

当100进制计数器进位端口为1时,与之相连的60进制计数器开始工作,当进位为0时停止工作,剩余两个计数器的工作原理与之相同。

将100进制计数器、两个60进制计数器和24进制计数器的en端口相连并连接到input得输入端口上,并且将他们的cir连接到一起也连接到input 的输入端口上,这样就实现了暂停和清零的功能,并且秒表的精确度为0.01。

在100进制的输入端口处还剩下一个clk端口,将两个输入端口通过一个与门与之相连,其中一个接入clk信号,而另一个就可当做一个开关,实现开始的功能,并且能够暂停。

将100进制计数器、两个60进制的计数器和24进制计数器的输出端分别接到8选1的数据选择器的输入端上,并且按高低位接好,而八进制的选择功能是通过一个8进制的不管计数来实现的,所以在8选1的数据选择器的sel 输入端端口接到8进制计数器的输出端上,而八进制的输入端口上,通过两个输入端input,一个接扫描频率,另一个通过一个开关来控制8进制的工作,并且清零端接1使它的清零作用失效。

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

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作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。

VHDL数字时钟设计

VHDL数字时钟设计

VHDL数字时钟设计序⾔这个是我在做FPGA界的HelloWorld——数字钟设计时随⼿写下的,再现了数字钟设计的过程⽬标分析1. 时钟具有时分秒的显⽰,需6个数码管。

为了减⼩功耗采⽤扫描法显⽰2. 按键设置时间,需要对按键进⾏消抖3. 时分秒即为2个60进制计数器,⼀个24进制计数器。

模块设计综上所述,我采⽤模块化设计⽅法进⾏设计,绘制框图如下。

1. 时钟分频产⽣各个模块所需频率时钟。

2. 按键处理模块对按键信号进⾏消抖、变长脉冲为短脉冲等处理。

3. 时间控制模块产⽣时间信号或对时间进⾏设置。

4. 数码管驱动模块负责对时间信号BCD码译码为数码管的段码并且扫描输出到数码管。

下⾯对各个模块分别详细叙述时钟分频模块我打算把时钟分频模块做成“数控N分频器”,通过给分频器传⼊数值N来对时钟信号进⾏N分频。

得到的信号频率为原时钟信号的频率/N,占空⽐为1/N。

稍微考虑下其他模块所需时钟:按键处理模块100Hz ,时间控制模块1Hz,数码管驱动50Hz。

⽽输⼊时钟为33.8688MHz。

我不想传⼊的N数值过⼤,我打算先对时钟进⾏两次:第⼀次调⽤时钟分频模块得到1Mhz,第⼆次得到1Khz。

这样N的位数为10可以满⾜需求。

代码如下library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_UNSIGNED.all;entity ClkDiv isport(clk_i:IN STD_LOGIC;N_i: IN STD_LOGIC_VECTOR(9 DOWNTO 0);clk_o:OUT STD_LOGIC);end ClkDiv;architecture behavior of ClkDiv issignal count:STD_LOGIC_VECTOR(9 DOWNTO 0):="0000000001";signal clk_temp:STD_LOGIC:='0';beginprocess(clk_i)beginif(clk_i'EVENT and clk_i='1')thenif (count=N_i)thencount<="0000000001";clk_temp<='1';elsecount<=count+1;clk_temp<='0';end if;end if;end process;clk_o<=clk_temp;end behavior;仿真结果如下:2分频:输出信号为f/2Hz,占空⽐1:23分频:输出信号为f/3Hz,占空⽐1:3按键处理模块去抖动根据以往的经验,按键按下弹起电平会有⼀⼩段⽑刺,可能会引起电路误操作,所以要对按键进⾏消抖处理使变为⼲净的矩形信号。

(完整版)VHDL复习

(完整版)VHDL复习

百度题库VHDL复习资料1.一个完整的VHDL程序,一般有哪几部分组成,它们分别描述的是什么?答:、VHDL程序的基本结构由(库)、(程序包)、(实体)、(结构体)和(配置)组成。

2.IF THEN语句、case when语句、with select语句各是什么类型语句,顺序语句必须放在什么地方?答:IF THEN语句与case when语句是顺序语句,with select语句是并行语句,顺序语句必须放在进程中。

3.结构体中常用的功能描述方式有几种?答:1)行为描述方式 2)数据流描述方式 3)结构化描述方式4.QuartusⅡ是CPLD/FPGA集成开发软件,基于QuartusⅡ软件进行设计开发,包括几个步骤,分别是什么?答:步骤分别是:1)新建项目 2)设计输入 3)分析综合及设计编译4)时序仿真 5)引脚分配及下载配置5.1987VHDL标准中规定标识符由什么组成,有什么具体要求?答:标识符可以由英文字母,数字,下划线“-”等组成选择填空1.在VHDL语言中,下列对时钟边沿检测描述中,错误的是( D )。

A.if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD.if clk’stable and not clk = ‘1’ then2.一个项目的输入输出端口是定义在( A )。

A.实体中B.结构体中C.任何位置D.进程体3. 下列语句中,不属于并行语句的是( B )。

A.进程语句B.CASE语句C.元件例化语句D.WHEN…ELSE…语句4.描述项目具有逻辑功能的是( B )。

A.实体B.结构体C.配置D.进程5.关键字ARCHITECTURE定义的是( A)。

A.结构体B.进程C.实体D.配置6.关键字ARCHITECTURE定义的是( A )。

A.结构体B.进程C.实体D.配置7.QUARTESII中编译VHDL源程序时要求( A )。

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;。

VHD语言数字时钟实验设计

VHD语言数字时钟实验设计

河南农业大学课程设计报告设计题目:VHD语言实现数字钟实验报告学院:理学院专业:电子信息科学与技术学号:08班级:07级电科(2)班姓名:贾秋峰电子邮件日期:2011年01月成绩:指导教师:河南农业大学理学院课程设计任务书学生姓名贾秋峰指导教师贾树恒林爱英学生学号08 专业电子信息科学与技术题目VHD语言实现数字钟实验报告任务与要求一、设计实验说明:1、数字时钟主要由:分频器、扫描显示译码器、六十进制计数器(或十进制计数器与6进制计数器组成)、六十进制计数器(或十进制计数器与6进制计数器组成)、十二进制计数器(或二十四进制计数器)电路组成。

在整个时钟中最关键的是如何获得一个精确的1H Z计时脉冲,2、数字时钟显示由时(12或24进制任选)、分(60进制)、秒(60进制)组成,利用扫描显示译码电路在六个数码管显示。

二、数字时钟组成及功能:1、分频率器:用来产生1H Z计时脉冲;2、十二或二十四进制计数器:对时进行计数3、六十进制计数器:对分和秒进行计数;4、六进制计数器:分别对秒十位和分十位进行计数;5、十进制计数器:分别对秒个位和分个位进行计数;6、扫描显示译码器:完成对7字段数码管显示的控制;三、系统硬件要求:1、时钟信号为5MHz;2、FPGA芯片型号EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3(根据实验箱上FPGA芯片具体选择);3、8个7段扫描共阴级数码显示管;4、按键开关(清零、启动、保持);四、硬件实现将时序仿真正确的文件下载到实验箱中的EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3中,通过合适的管脚分配,将相应的管脚连接起来,验证设计是否完成设计要求;五、要求1、精确显示时、分、秒。

2、数字时钟要求:具有对时、分、秒置数功能(利用秒脉冲置数或利用拨码开关、键盘直接置数);3、能够完成整点报时功能。

(选作)开始日期年月日完成日期年月日课程设计所在单位理学院电子科学系VHD语言实现数字钟实验报告一.实验目的在MAX+plusII软件平台上,熟练运用VHDL语言。

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;波形文件:生成元器件及连接电路思考:有程序可以看出,定义了三个输入端,一个输出端。

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;分别把上面程序生成符号文件画如下原理图:波形仿真图如下:。

基于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)适配下载结果六、结果分析本实验实现了两位二进制数的比较。

VHDL的设计流程

VHDL的设计流程

VHDL的设计流程,它主要包括以下几个步骤:1. 文本编辑: 用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。

2. 功能仿真: 将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确。

3. 逻辑综合: 将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。

4. 时序仿真: 需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。

5. 器件编程: 对使用的元件可以进行编程。

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

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

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

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

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

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

三、数字时钟组成及功能1、分频率器:用来产生100HZ计时脉冲;2、十二或二十四进制计数器:对时进行计数3、六十进制计数器:对分和秒进行计数;4、六进制计数器:分别对秒十位和分十位进行计数;5、十进制计数器:分别对秒个位和分个位进行计数;6、扫描显示译码器:完成对7字段数码管显示的控制;四、系统硬件要求1、时钟信号为10MHz;2、FPGA芯片型号EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3(根据实验箱上FPGA芯片具体选择);3、8个7段扫描共阴级数码显示管;4、按键开关(清零、启动、保持,暂停);五、设计内容及步骤1、根据电路持点,用层次设计概念。

第5章 计数器VHDL描述

第5章 计数器VHDL描述

调整进制
PROCESS (clr,clk) BEGIN IF(clr=‗1‘) THEN Count_B<=―00000000‖; q <= ‗0‘; ELSIF (clk'EVENT AND clk = ‗1‘ ) THEN IF (Count_B = ―00001111‖) THEN Count_B<=―00000000‖; else Count_B<=count_B + 1;
END IF; END IF; END PROCESS;
一、基本计数器的设计
计数器是数字系统的一种基本部件,是典 型的时序电路。计数器的应用十分广泛, 常用于数/模转换、 计时、频率测量等。
加法计数器VHDL源程序:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY countbasic IS PORT(clk:IN STD_LOGIC; q:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0)); END countbasic; ARCHITECTURE a OF counbasict IS BEGIN
同步复位
PROCESS (clock) BEGIN if clock =‗1‘ and clock‘EVENT then if reset = ‗1‘ then sout <= ‗0‘; tmp <= ‗0‘; else sin sout <= sin; tmp tmp <= not tmp; clock reset end if; END IF; END PROCESS;
简单时序电路的VHDL描述

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技术》课程实验报告
学生姓名:郑月庭
所在班级:电信1001
指导教师:高金定老师
记分及评价:
项目满分5分
得分
一、实验名称
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 j602 Is
port (clk:in std_logic;
ent:in std_logic;
rst:in std_logic;
y0: out std_logic_vector(3 downto 0);
y1: out std_logic_vector(3 downto 0);
cout: out std_logic);
End j602;
Architecture j602 of j602 is
signal cnt0 :std_logic_vector(3 downto 0);
signal cnt1 :std_logic_vector(3 downto 0);
Begin
cout<='1' when (cnt1="0101" and cnt0="1001" and ent = '1') else '0';
process(clk,rst)
Begin
If rst ='0' Then
cnt0<="0000";
cnt1<="0000";
elsif clk'event and clk='1' Then
if ent = '1' Then
if cnt0="1001" Then
cnt0<="0000";
if cnt1="0101" Then
cnt1<="0000";
else
cnt1<=cnt1+1;
end if;
else
cnt0<=cnt0+1;
end if;
end if;
end if;
end process;
y0<=cnt0;
y1<=cnt1;
end j602;
四、仿真及结果分析
五、硬件验证
1、选择模式:模式5
六、小结
通过这次实验,使我明白了用VHDL语言编程和用设计原理图实现同样功能器件的区别,从而加深的对EDA的理解。

相关文档
最新文档