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