EDA课程设计说明书 简易频率计设计(可打印修改) (2)
- 格式:pdf
- 大小:257.98 KB
- 文档页数:15
摘要 (1)
一、简易数字频率计设计原理 (2)
1.1基本原理 (2)
1.2原理框图 (2)
二、各模块程序及仿真 (4)
2.1信号处理模块_verilog: (4)
2.2计数器模块: (5)
2.3信号显示处理 (7)
三、仿真结果分析 (10)
总结与致谢 (13)
参考文献 (14)
EDA技术是以硬件语言为主要的描述方式,以EDA软件为主要的设计软件,以大规模课编程逻辑器件为载体的数字电路的设计过程。其设计的灵活性使得EDA技术得以快速发展和广泛应用。本设计以QuartusⅡ软件为设计平台,采用Verilog HDL语言现数字频率计的整体设计。电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域,电子设计自动化是一种实现电子系统或电子产品自动化设计的技术,它与电子技术,微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。EDA的一个重要特征就是使用硬件描述语言(HDL)来完成的设计文件,在电子设计领域受到了广泛的接受。EDA技术就是以计算机为工具,设计者在EDA软件平台上,有硬件描述语言Verilog HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作,最终形成集成电子系统或专业集成芯片的一门新技术。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
关键词:EDA;QuartusⅡ;Verilog HDL
一、简易数字频率计设计原理
1.1基本原理
数字频率计的主要功能是测量周期信号的频率。频率计的基本原理是用一
个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
频率是单位时间(1秒)内方波信号发生周期变化的次数。在给定的1秒
时间内对方波信号波形计数,并将所计数值显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,然后通过计数器计算这
一段时间间隔内的方波脉冲个数并显示出来。这就是数字频率计的基本原理。
脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为
f=N/T,其中f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生
N个脉冲所需的时间。本设计要求基准时钟的频率为1MHZ。待测方波信号的
频率在1HZ-9999HZ,所以用四位7段数码管无法完全正确显示,所以需要选
择恰当的量程来显示待测风波信号的频率,当量程选择不当或者频率超出
9999HZ时,能够给出指示信号。
1.2原理框图
根据设计要求,输入系统的标准时钟信号要先经过分频后得到一个周期为
2s占空比50%的信号,用来对输入信号采样,得到采样信号GATED_CLK;为了能够控制计数模块对采样的信号进行正常计数及保存计数后的频率,这要求,要在计数器刚好完成计数后立即将数据输出给显示部分进行显示,并且要为下
次计数做好准备,因此数据信号处理部分还要有产生控制计数器的两个信号LOAD和COUNTER_CLR,LOAD信号控制计数完成后的数据及时输出给显示,COUNTER_CLR信号控制计数器清零;计数模块就是完成对采样信号的计数,并当计数发生溢出时产生溢出信号FLOW_UP;显示控制模块要完成将计数模
块输入的信号进行译码显示。
1.3信号描述
测试信号采样原理:
GATED_CLK、LOAD、COUNTER_CLR信号的关系:
程序中用到的信号变量:
FREQUENCY_COUNTROL_BLOCK FREQUENCY_COUNTER_BLOCK FREQUENCY_DISPLY_BLOC
K
GATED_CLK采样信号COUT计数输出信号DOUT输出到数码管LOAD控制计数器信号FLOW_UP计数溢出信号CDIN计数输入信号COUNTER_CLR清零计数器信号CLOCK_IN计数器时钟信号DCLK_IN标准时钟信号CLK_IN标准时钟信号LOAD控制计数输出RESET复位信号SIGNAL_TEST测试信号COUNTER_CLR清零计数信号
RESET复位信号RESET复位信号
二、各模块程序及仿真
此设计运用元件例化的方法进行功能的实现,所以各个模块即使相互独立又是彼此联系的,三个模块和一个顶层共同完成方波信号的测量。
2.1信号处理模块_verilog:
module
FREQUENCY_COUNTROL_BLOCK(GATED_CLK,LOAD,COUNTER_CLR,CL K_IN,SIGNAL_TEST,RESET);
output GATED_CLK;
output LOAD;
output COUNTER_CLR;
input CLK_IN;
input SIGNAL_TEST;
input RESET;
reg LOAD;
reg COUNTER_CLR;
reg DIVIDE_CLK;
reg[19:0] cn;
reg A1,A2;
//信号分频:由CLK_IN得到分频后的信号DIVIDE_CLK(0.5Hz)
always @(posedge CLK_IN)
begin
if(RESET)
begin
DIVIDE_CLK<=0;
cn<=0;
end
else if(cn==1000000)
begin
cn<=0;
DIVIDE_CLK<=~DIVIDE_CLK;
end
else