基于eda数字频率计
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
专业班级: 学生姓名: 指导教师(签名): 一、课程设计(论文)题目
数字频率计的设计
二、本次课程设计(论文)应达到的目的
通过课程设计使学生能熟练掌握一种EDA软件(MAXPLUS2)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程。
通过课程设计使学生能利用EDA软件(MAXPLUS2)进行至少一个电子技术综合问题的设计(内容可由老师指定或自由选择),设计输入可采用图形输入法或VHDL硬件描述语言输入法。
通过课程设计使学生初步具有分析、寻找和排除电子电路中常见故障的能力,培养学生的自我能力和独立分析、解决问题的能力。包括:查阅参考资料、工具书,掌握数字系统仿真调试的一般规律。
通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)
设计一个能测量方波信号的频率的频率计。
测量的频率范围是0~999999Hz。
结果用十进制数显示。
四、应收集的资料及主要参考文献: 1、赵曙光等编著 可编程逻辑器件原理、开发与应用 西安:西安电子科技大学出版社,2000
2、IC设计基础. 任艳颖,王彬编著. 西安:西安电子科技大学出版社.2003 3、FPGA设计及应用.褚振勇,翁木云编著. 西安:西安电子科技大学出版社,2002
4、数字系统设计和HDL相关书籍和资料
五、审核批准意见
教研室主任(签字)
1
目录
一:课程设计名称:数字频率计的设计…………………………………………3 二 :设计思想及系统框图……………………………………………………….3 三 实现方法……………………………………………………………………….4 四 具体模块和实现……………………………………………………………….4 1 计数电路…………………………………………………………………………4 2 控制电路…………………………………………………………………………6 3 锁存模块…………………………………………………………………………9 4 0~99999计数器实现……………………………………………………………10 五:系统工作时序图………………………………………………………………11 六:误差分析及
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
………………………………………………………………11 参考文献……………………………………………………………………………12
2
基于VHDL的数字频率计设计
一:课程设计名称:数字频率计的设计
要求:设计一个能测量方波信号的频率的频率计,其技术要求如下:
(1)测量频率范围:0Hz~999999Hz。
(2)结果用十进制数显示。
二 :设计思想及系统框图
所谓频率,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔 T内测得这个周期信号的重复变化次数为N,则其频率可表示为
f=N/T
当被测信号的频率较低时,采用测频方法由量化误差引起的测频误差太大,为此应先测周期Tx,然后计算fx=1/Tx 。
用标准时钟给定闸门信号,在已知时间内(1s)计算脉冲个数,得到的就是该未知信号的频率。由于信号较低时,1s内的个数较少,计算误差太大,所以计时改为10s,计数值除以十,便是频率。所以要能实现闸门的改变,实现自动切换。
系统框图:
测量频率系统框图如图所示,系统由控制器和处理器组成,控制器接收外部标准时钟和系统复位信号。处理器由计数器和锁存器和显示器组成
COUNT_CLR信号用于在每次测量开始时,对计数模块复位,以清除上次测量的结果。该复位信号高电平有效,持续半个时钟周期的时间。
COUNT_EN信号为计数允许信号,高电平有效。在信号的上升沿开始,对输入信号的频率进行测量。计数器开始对被测信号的脉冲数进行计数,即为信号的频率。
锁存器的功能是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁
3
三 实现方法
用maxplus2编程实现底层模块,组装成高层模块,烧入指定芯片中,在指定数字电路板上测试功能。详细资料查看实验室资料和相关
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
。 四 具体模块和实现
最底层模块和程序:
1 计数电路
十进制计数电路,满十输出一个正脉冲,提供高位计数器的计数脉冲,6个组合可以实现0~999999的计数,为基本计数单元。
其程序源代码:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity cnt102 is
port( clk : in std_logic; --时钟信号
clr : in std_logic; --清零信号
ena : in std_logic; --时钟使能信号
cq : buffer std_logic_vector(3 downto 0);
cout : out std_logic --进位信号
);
end cnt102;
architecture one of cnt102 is begin
process(clk,clr,ena)
4
begin
if clr='1' then cq<="0000";
elsif clk'event and clk='1' then
if ena='1' then
if cq="1001" then cq<="0000";
else cq<=cq+1;
end if;
end if;
end if;
end process;
process(cq)
begin
if cq="1001" then cout<='0';
else cout<='1';
end if;
end process;
end;
生成模块(CNT102):
5
说明: ENA:为闸门信号,高电平有效,在有效时,允许计数,否则计数器停止计数并保持计数值不变。
CLR:清零信号,下降沿有效,有效时计数器计数寄存器清零。
CLK:计数输入脉冲,计数的基本单位。
Q[3..0]:计数值寄存器,输出计数值。
COUT:进位脉冲。
时序图
2 控制电路
控制闸门时间长度,实现时间长度自动切换,为控制电路核心模块。 程序源代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ct is
port( clk : in std_logic;
clr:out std_logic;
ena : out std_logic;
6
lock : out std_logic); end ct;
architecture ct_ac of ct is signal x : std_logic;
begin
process(clk)
variable cnt : integer range 999 downto 0;
begin
if clk'event and clk='1' then
if cnt<999 then
cnt:=cnt+1;
else cnt:=0;
x<=not x;
end if;
if clk='0' and x='0'then clr<='1';
else clr<='0';
end if;
end if;
7
end process;
ena<=x;
lock<=not x;
end ct_ac;
生成模块(CT)
说明:ENA:为闸门信号,高电平有效,在有效时,允许计数,否则计数器停止计数并保持计数值不变。
CLR:清零信号,下降沿有效,有效时计数器计数寄存器清零。
CLK:标准时间脉冲,为已知脉宽信号,分频得到确定高电平宽度的脉冲即DOOR信号。为系统工作的基准时间。
LOCK:锁存控制信号,下降沿有效,有效时,将输入计数值锁存。 时序图:
8
3 锁存模块
实现锁存计数值和比较计数值是否有效(在允许误差范围内),并输出相应
结果信号,提供反馈信号。
程序源代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity reg4 is
port( clk : in std_logic;
cq : in std_logic_vector(3 downto 0);
led : out std_logic_vector(3 downto 0)
);
end reg4;
architecture one of reg4 is
begin
process(clk,cq)
begin
if clk='1' then led<=cq;
end if;
end process;
9
end;
生成模块(REG4)
说明:CQ[3..0]:计数输入值,为锁存对象。
LED[3..0]:4位寄存器,为锁存输出,数值无效是输出全1。
CLK:标准时间脉冲,为已知脉宽信号,分频得到确定高电平宽度的脉冲
即DOOR信号。为系统工作的基准时间。
时序图:
以上为基本模块,下面构成高层模块,实现他们之间连接。
4 :0~99999计数器实现:
10
五:系统工作时序图:
说明:在clk输入周期为1ms的情况下,输入周期为0.01s的信号,得到对应的频率为100hz ,即为数字频率计测得的结果。 六:误差分析及总结
在实际使用在中(测试时),跟源输出频率有一定的误差(在误差允许范围内)。分析程序有以下几个位置会导致误差:
11
1 闸门时间长度。
在产生闸门信号宽度时,采用计数方式分频,得到需要的脉宽。当需要0.1秒是器计数值应为102.4,但计数值不能有小数,所以该为102,使计数时间变短,造成误差。
2 标准信号的脉冲宽度不标准
由系统工作时序图知,标准信号是系统工作的基准,其准确性直接影响闸门宽度。周期为1/1024=0.0009765625s,频率源提供有误差的频率会造成误差。 3 数字信号本生的局限性
信号频率是连续的,但数字信号本生是离散的,用离散量去代替连续量会有误差,但能够做得足够精确,以达到误差要求。低频时误差较大。 课程设计总结:
这次实验是典型的用软件来设计硬件,底层模块结合构成顶层模块,数字化系统,程序化实现,自动控制。虽然实现该功能不难,但其思想很重要,层次化设计流程,思路要清晰,目的要明确,方法要经得住推敲,现在模拟系统在中测试通过再在实际硬件环境中测试。结合了现代设计工具,加快了开发过程,使我们对现代开发流程有了基本的概念。这次让我颇为高兴的是整个制作过程是通过自己的努力和向别人的请教终于做了出来,真正体会到计算机辅助设计的优势。
参考文献
[l] 侯伯亨 顾新《vhdl硬件描述语言与数字逻辑硬件》西安电子工科
技出版社 2004年
[2] 潘松 王国栋《vhdl实用教程》电子科技大学出版社出版社 2007 [3] 乔建良 徐源 田思 张风蕊 《EDA技术及应用实践》清华大学出版
2006年
[4] 潘松 黄继业 《EDA技术实用教程》科学出版社 2008年
结论
12
13