五、系统框图
方案二
数字频率计允许测量信号的类型有三种:方波、三角波和正弦波,并且信号的测量通道灵敏度为 50mVpp,为此,需要将被测信号放大整形成标准的TTL电平的方波型号,便于CPLD/FPGA对信号脉冲的计数。在按键的设计中,需要考虑实际按键的消抖问题。标准时钟为频率计测量提供精度相对比较高的时基信号,其时间的稳定性与精度将会直接影响到频率计测量的准
确性。频率计将测量的结果通过6位数码管(LED)来显示。数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在六个数码管上。首先将系统分成七个模块来分别设计仿真。分别有以下七个模块:经过上述模块化划分后的结构框如图4.1所示
图4.1 模块化划分后的结构
● 计数模块counter:对包含被测信号频率信息的脉冲进行计数 ● 门控模块gate_control:根据量程,控制技术模块计数。
● 分频模块fdiv:将标准时钟分频,得到计数以及动态显示所需的时钟。 ● 寄存器模块flip_latch:对计数模块的计数值进行寄存。
● 多路选择模块data_mux:根据动态选择信号,选择相应的需要显示的计数值 ● 动态为选择模块dispselevt:输出动态显示中的位选信号 ● BCD译码模块dispdenoder:将BCD码译成数码管的显示数据
计数模块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); output [3:0] Q5,Q4,Q3,Q2,Q1,Q0; Q0 <= Q0 + 4'b0001; output F_OUT;
F_OUT <= 1'b0;
input EN; end input CLR; else input F_IN; begin
Q0 <= 4'b0000;
reg [3:0] Q5,Q4,Q3,Q2,Q1,Q0;
if((EN == 1'b1)&&(CLR reg F_OUT; 1'b0)&&(Q1 != 4'b1001))
reg
begin
F_out0,F_out1,F_out2,F_out3,F_out4;
Q1 <= Q1 + 4'b0001; always @(posedge F_IN) F_OUT <= 1'b0; begin end if((EN
==
1'b1)&&(CLR
==
else 1'b0)&&(Q0 != 4'b1001))
begin
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 end end end end end endmodule
相关推荐: