卢思萌 信1411011001频率计设计 第 - 11 - 页 共 46 页
3 数字频率计系统框图
3.1数字频率计系统框图
设计如图3.1.1所示的数字频率计系统电路框图
图3.1.1 所示的数字频率计系统电路框图
3.2数字频率计系统部件简介
1. 放大整形
数字频率计允许测量信号的类型有三种:方波、三角波和正弦波,并且信号的测量通道灵敏度为 50mVpp,为此,需要将被测信号放大整形成标准的TTL电平的方波型号,便于CPLD/FPGA对信号脉冲的计数。 2. SW1、SW2、SW3按键
SW1、SW2、SW3这三个按键用来在测量的时候,用户根据被测信号的大致频率范围选择不同的适合被测信号的量程。在按键的设计中,需要考虑实际按
- 11 -
卢思萌 信1411011001频率计设计 第 - 12 - 页 共 46 页
键的消抖问题 3. 标准时钟
标准时钟为频率计测量提供精度相对比较高的时基信号,其时间的稳定性与精度将会直接影响到频率计测量的准确性。 4. LED显示模块
频率计将测量的结果通过6位数码管(LED)来显示。
4 基于Verilog HDL数字频率计程序设计
4.1数字频率计系统模块划分结构
数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在六个数码管上。首先将系统分成七个模块来分别设计仿真。分别有以下七个模块:
经过上述模块化划分后的结构框如图4.1所示
图4.1 模块化划分后的结构
- 12 -
卢思萌 信1411011001频率计设计 第 - 13 - 页 共 46 页
● 计数模块counter:对包含被测信号频率信息的脉冲进行计数
● 门控模块gate_control:根据量程,控制技术模块计数。
● 分频模块fdiv:将标准时钟分频,得到计数以及动态显示所需的时钟。 ● 寄存器模块flip_latch:对计数模块的计数值进行寄存。
● 多路选择模块data_mux:根据动态选择信号,选择相应的需要显示的计数值
● 动态为选择模块dispselevt:输出动态显示中的位选信号 ● BCD译码模块dispdenoder:将BCD码译成数码管的显示数据
4.2计数模块counter
该模块主要完成对被测信号经过放大整形后输入到可编程逻辑器件的F_IN信号是现在一定的时间下的计数,采用六个异步BCD码十进制计数器来实现 0~999999范围的计数。
计数模块的结构框图如图4.2.1所示。
图4.2.1 计数模块的结构框图
根据模块实现的功能设计Verilog HDL源代码如下:
module counter(EN,CLR,F_IN,F_OUT,Q0,Q1,Q2,Q3,Q4,Q5);
- 13 -
output [3:0] Q5,Q4,Q3,Q2,Q1,Q0; output F_OUT; input EN; input CLR; input F_IN;
reg [3:0] Q5,Q4,Q3,Q2,Q1,Q0; reg F_OUT; reg
F_out0,F_out1,F_out2,F_out3,F_out4;
always @(posedge F_IN) begin
if((EN == 1'b1)&&(CLR == 1'b0)&&(Q0 != 4'b1001))
begin
Q0 <= Q0 + 4'b0001;
F_OUT <= 1'b0;
end else begin Q0 <= 4'b0000;
if((EN == 1'b1)&&(CLR ==
1'b0)&&(Q1 != 4'b1001))
begin
Q1 <= Q1 + 4'b0001; F_OUT <= 1'b0; end else begin
Q1 <= 4'b0000;
if((EN == 1'b1)&&(CLR ==
1'b0)&&(Q2 != 4'b1001))
begin
Q2 <= Q2 + 4'b0001;
F_OUT <= 1'b0; end else begin Q2 <= 4'b0000;
if((EN == 1'b1)&&(CLR ==
1'b0)&&(Q3 != 4'b1001))
begin
Q3 <= Q3 + 4'b0001; F_OUT <= 1'b0; end else begin
Q3 <= 4'b0000;
if((EN == 1'b1)&&(CLR ==
1'b0)&&(Q4 != 4'b1001))
begin
Q4 <= Q4 + 4'b0001; F_OUT <= 1'b0; end else begin
Q4 <= 4'b0000;
if((EN == 1'b1)&&(CLR
== 1'b0)&&(Q5 != 4'b1001))
begin
Q5 <= Q5 + 4'b0001; F_OUT <= 1'b0; end else begin
Q5 <= 4'b0000;
F_OUT <= 1'b1;
end end
卢思萌 信1411011001频率计设计 第 - 15 - 页 共 46 页
end end Endmodule
end end end
该模块定义输入端口如下:
● EN:异步BCD码十进制计数器的全局使能信号 ● CLR:异步BCD码十进制计数器复位信号 ● F_IN:被测信号经过放大与整形处理后的信号 该模块定义输出端口如下:
● F_OUT:超出技术范围0~999999的输出信号,用来指示提醒用户选择更大的量程。
● Q0:计数器的最低位输出 ● Q1:计数器的第5位输出 ● Q2:计数器的第4位输出
● Q3:计数器的第3位输出 ● Q4:计数器的第2位输出 ● Q5:计数器的第1位输出
在Altera公司的软件工具QuartusII中编译和波形仿真得到波形如图4.2.2所示。
图4.2.2 计数模块counter的仿真波形
- 15 -