基于FPGA的电子时钟设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA与电子CAD报告
班号:
序号:
学号:
姓名:
同组同学姓名:
--大学电气与新能源学院
第1章VHDL中的并行语句、进程
●并行语句:
VHDL语言与传统软件描述语言最大的不同,有多种语言格式,包括:并行信号赋值语句、进程语句、块语句、元件例化语句、生成语句、并行过程调用语句。各种并行语句在结构体中的执行是同步进行的,或者说是并行运行的,其执行方式与书写顺序无关。在执行中,并行语句之间可以有信息往来,也可以是互为独立、互不相关、异步运行的(如多时钟情况)。每一并行语句内部的语句运行方式可以有两种不同的方式,即并行执行方式(如块语句)和顺序执行方式(如进程语句)
●并行语句优点:
并行语句用来直接构成结构体,结构体具有层次性,简单易读。并行语句在结构体中的执行是同步进行的,或者说是并行运行的,其执行方式与书写的顺序无关。在执行中,并行语句之间可以有星系往来,也可以互为独立、互不相关。并行语句内部的语句运行方式有两种:并行执行方式(如块语句)和顺序执行方式(如进程语句)。
如:并行信号赋值语句块语句元件例化语句
●进程语句:
VHDL中最重要的语句,具有并行和顺序行为的双重性
进程和进程之间是并行关系
进程内部是一组连续执行的顺序语句
进程语句与构造体中的其余部分进行信息交流靠信号完成的
基本格式:
[进程标号:]
PROCESS[(信号敏感表)]IS
<说明区>
BEGIN
<顺序语句>
END PROCESS[进程标号];
第2章信号、变量、顺序语句、循环语句
●信号:
即数据对象中的信号,可代表连线、内连元件或端口用“<=”来给信号赋值SIGNAL
SIGNALCount:Bit_Vector(3downto0);
IFRising_Edge(clk)THEN
Count<=Count+1;
END IF;
信号在Package、Entity、Architecture中声明
●变量:
仅用于进程和子程序
必须在进程和子程序的说明性区域说明
不能表达连线和存储元件
保留字——VARIABLE
VARIABLEtmp:Bit;
tmp:‘1’;
●顺序语句:
每一条顺序语句的执行(指仿真执行)顺序是它们的书写顺序基本一致的顺序语句只能出现在进程(PROCESS)、函数(FUNCATION)和过程(PROCEDURE)中。
顺序语句包括::赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句
●循环语句:
即LOOP语句
基本格式:
[LOOP标号:]
[重复模式]LOOP
顺序语句;
END LOOP[LOOP标号] NEXT
[LOOP标号][WHEN语句]
第3章分频器、计数器、译码器
分频器
分频器就是对较高频率的信号进行分频,得到较低频率的信号。
常见的分频器有二进制分频器、偶数分频器、奇数分频器、占空比可调的分频器和小数分频器。
分频系数(倍率)rate=f(in)/f(out)
计数器
模块电路图:
译码器:
第4章数字钟综合设计
设计流程图
数据选择器电路图:
延时去抖动模块电路:
时钟电路图
闹钟模块电路图:
定时器模块电路图:
秒表模块电路图:
程序
1.分频器
●1HZ,50M分频器程序
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
entity jsq_1_37_38 is
port(clk : in std_logic;
carry : out std_logic);
end jsq_1_37_38;
architecture one of jsq_1_37_38 is
signal m :std_logic_vector(25 downto 0);
begin
process(clk,m)
begin
if clk'event and clk='1' then
if m=49999999 then
m<="00000000000000000000000000";carry<='1';
else
m<=m+1;carry<='0';
end if;
end if;
end process;
end;
●10HZ,5M分频器程序
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
entity DELAY37_38 is
port(clk : in std_logic;
carry : out std_logic);
end DELAY37_38;
architecture one of DELAY37_38 is
signal m :std_logic_vector(25 downto 0);
begin
process(clk,m)
begin
if clk'event and clk='1' then