My title page contents

基于FPGA的简易等精度频率计设计Verilog代码VIVADO仿真

名称:基于FPGA的简易等精度频率计设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:简易等精度频率计设计


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

等精度频率计设计.doc

1. 工程文件

2. 程序代码

3. 程序综合

4. RTL图

5. 测试代码

6. 仿真图


部分代码展示:

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2019/01/13 15:33:36
// Design Name: 
// Module Name: Frequency_Calculator
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////
module Frequency_Calculator(
input    reset_n, //系统复位信号
input    clk_200M,//系统时钟信号,这里采用200MHz
    
input    frequency_in,//待测信号输入                                                                                                                                        
output   [59:0] Frequency_out//输出频率,单位Hz
);
parameter  Gate_div_number=32'd400000;//闸门信号计数值,为便于仿真取400000(1ms),若取400000000则为1s
reg clk_100M=0;             //已知频率的标准输入信号100M
always@(posedge clk_200M)
    if(reset_n==0)
        clk_100M<=0;
    else
        clk_100M<=~clk_100M;//200M分频到100M
reg Gate=0;           //闸门信号输入,取1ms
reg [31:0] Gate_time_cnt=32'd0;
always@(posedge clk_200M)
if(reset_n==0)
    Gate_time_cnt<=32'd0;
else
    if(Gate_time_cnt==Gate_div_number-1)
        Gate_time_cnt<=32'd0;
    else
        Gate_time_cnt<=Gate_time_cnt+32'd1;
        
always@(posedge clk_200M)
if(reset_n==0)
    Gate<=0;
else
    if(Gate_time_cnt>=Gate_div_number/2)
         Gate<=1;//闸门信号输入
    else
         Gate<=0;
reg[29:0]F_in_cycle;   //待测信号的周期个数
reg[29:0]clk_in_cycle;   //标准输入信号周期个数
reg Data_Done; //待测信号和标准输入信号的周期数计算完成
//同步待测信号输入
reg frequency_in_temp0,frequency_in_temp1;
always@(posedge clk_200M or negedge reset_n)
if(!reset_n)begin
    frequency_in_temp0 <= 1'b0;
    frequency_in_temp1 <= 1'b0;    
end
else begin
    frequency_in_temp0 <= frequency_in;
    frequency_in_temp1 <= frequency_in_temp0;    
end 
    
//检测待测信号变化
wire frequency_in_change;
assign frequency_in_change = (frequency_in_temp0 != frequency_in_temp1)?1'b1:1'b0;
//同步闸门信号输出
reg Sync_Gate=0;
always@(posedge clk_200M or negedge reset_n)
if(!reset_n)
    Sync_Gate <= 1'b0;
else if(frequency_in_change && (!frequency_in_temp1))begin
    if(Gate)

 

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的简易等精度频率计设计Verilog代码VIVADO仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员