信号滤波模块verilog代码

 `timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer: chensimin
//
// Create Date: 2017/12/14 17:15:25
// Design Name:
// Module Name: glitch_filter_1
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module glitch_filter_1 #(
parameter WIDTH = ,
parameter CNT_CLK_FREQUENCY = ) // frequency cnt_clk in MHz
(
input wire cnt_clk,
input wire [WIDTH-:] delay_time_high,
input wire [WIDTH-:] delay_time_low,
input wire clk,
input wire rst,
input wire sign_src,
output wire sign_src_filter
); localparam UNLOCK = 'b0;
localparam LOCK = 'b1; reg get_time_1us;
reg [WIDTH-:]m;
always @ ( posedge cnt_clk or posedge rst )
begin
if( rst )
begin
get_time_1us <= 'b0;
m <= ;
end
else if( m == CNT_CLK_FREQUENCY - )
begin
get_time_1us <= 'b1;
m <= ;
end
else
begin
get_time_1us <= 'b0;
m <= m + 'b1;
end
end reg [WIDTH-:]i;
reg [WIDTH-:]k;
reg get_delay_time_high;
reg get_delay_time_low;
reg current_state;
reg next_state;
always @ ( posedge cnt_clk or posedge rst )
begin
if( rst )
begin
get_delay_time_high <= 'b0;
get_delay_time_low <= 'b0;
i <= ;
k <= ;
end
else
begin
get_delay_time_high <= 'b0;
get_delay_time_low <= 'b0;
case( current_state )
UNLOCK:
if( sign_src == 'b1 )
begin
if( i == delay_time_high - )
begin
get_delay_time_high <= 'b1;
i <= ;
end
else if( get_time_1us )
begin
i <= i + 'b1;
end
end
else
begin
i <= ;
end
LOCK:
if( sign_src == 'b0 )
begin
if( k == delay_time_low - )
begin
get_delay_time_low <= 'b1;
k <= ;
end
else if( get_time_1us )
begin
k <= k + 'b1;
end
end
else
begin
k <= ;
end
endcase
end
end always @ ( posedge cnt_clk or posedge rst )
begin
if( rst )
current_state <= UNLOCK;
else
current_state <= next_state;
end always @ ( * )
begin
case( current_state )
UNLOCK:
if( get_delay_time_high == 'b1 )
next_state = LOCK;
else
next_state = UNLOCK;
LOCK:
if( get_delay_time_low == 'b1)
next_state = UNLOCK;
else
next_state = LOCK;
endcase
end reg sign_src_r;
always @ ( posedge cnt_clk or posedge rst )
begin
if( rst )
sign_src_r <= 'b0;
else
begin
case( current_state )
UNLOCK:
sign_src_r <= 'b0;
LOCK:
sign_src_r <= 'b1;
endcase
end
end reg [:]sign_src_r_delay;
always @ ( posedge clk or posedge rst )
if(rst)
sign_src_r_delay <= 'b00;
else
sign_src_r_delay <= {sign_src_r_delay[], sign_src_r}; assign sign_src_filter = sign_src_r_delay[]; endmodule /*
add_force {/glitch_filter_1/cnt_clk} -radix hex {0 0ns} {1 50000ps} -repeat_every 100000ps
add_force {/glitch_filter_1/rst} -radix hex {1 0ns} {0 100000ps}
add_force {/glitch_filter_1/sign_src} -radix hex {0 0ns} {1 198000ps} {0 232000ps} {1 308000ps} {0 354000ps} {1 400000ps} {0 450000ps} {1 552000ps} {0 2550000ps} {1 2740000ps} {0 2850000ps} {1 2950000ps} {0 3550000ps}
add_force {/glitch_filter_1/delay_time_high} -radix hex {4 0ns}
add_force {/glitch_filter_1/delay_time_low} -radix hex {5 0ns}
add_force {/glitch_filter_1/clk} -radix hex {0 0ns} {1 25000ps} -repeat_every 50000ps */

备注:对易产生锯齿的信号进行滤波,增强其稳定性。

信号滤波模块verilog代码---UNLOCK,LOCK状态机方式的更多相关文章

  1. Verilog代码规范I

    Verilog代码规范I "规范"这问题 "规范"这个富含专业气息的词汇(个人感觉),其实规范这种东西,就是大家都约定熟成的东西,一旦你不遵守这个东西,专业人士 ...

  2. 总线读写---verilog代码

    总线读写---verilog代码 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...

  3. BT.656 NTSC制式彩条生成模块(verilog)

    BT.656 NTSC制式彩条生成模块(verilog) 1.知识储备 隔行扫描是将一副图像分成两场扫描,第一场扫描第1,2,5,7...等奇数行,第二场扫描2,4,6,8...等偶数行,并把扫奇数行 ...

  4. SDRAM驱动篇之简易SDRAM控制器的verilog代码实现

    在Kevin写的上一篇博文<SDRAM理论篇之基础知识及操作时序>中,已经把SDRAM工作的基本原理和SDRAM初始化.读.写及自动刷新操作的时序讲清楚了,在这一片博文中,Kevin来根据 ...

  5. 分享:FIFO 同步、异步以及Verilog代码实现

    FIFO 很重要,之前参加的各类电子公司的逻辑设计的笔试几乎都会考到. FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线 ...

  6. Verilog代码和FPGA硬件的映射关系(一)

    代码和硬件之间的映射关系是一个很奇妙的过程,也展现出人类的智慧.单片机内部的硬件结构都是固定的,无法改变,我们通过代码操作着寄存器的读写,来执行各种复杂的任务.FPGA的硬件结构并不像单片机一样是固定 ...

  7. 学会使用Hdlbits网页版Verilog代码仿真验证平台

    给大家推荐一款网页版的 Verilog代码编辑仿真验证平台,这个平台是国外的一家开源FPGA学习网站,通过“https://hdlbits.01xz.net/wiki/Main_Page” 地址链接进 ...

  8. 用PCA(主成分分析法)进行信号滤波

    用PCA(主成分分析法)进行信号滤波 此文章从我之前的C博客上导入,代码什么的可以参考matlab官方帮助文档 现在网上大多是通过PCA对数据进行降维,其实PCA还有一个用处就是可以进行信号滤波.网上 ...

  9. -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中

     本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait( ...

随机推荐

  1. Kafka的安装 -- 未完成

    1. 官网下载软件 2. linux服务器上, 安装上传和下载的工具 yum install -y lrzsz rz : 上传 sz + 文件名 : 下载 3.解压文件 pwd: 查看当前路径 解压到 ...

  2. 【Python】Excel操作-2 (07版本以下Excel操作,其实不怎么用了,麻蛋,预习了2天课间才发现,还说怎么跟老师讲的不一样)

    #保存修改Excel import xlrd from xlutils.copy import copy #打开Excel文档并将内容读取到内存 readbook=xlrd.open_workbook ...

  3. batch normalization在测试时的问题

    验证: 在测试时可以一张图,但设置use_global_stats:true,已经验证,第一台4gpu上,路径:/home/guangcong/projects/unlabeled-video/tra ...

  4. builder模式-积木系列

    代码高效的表达意图,是优秀代码的基本标准,所以在刚刚写代码的时候我们总是被教育方法的名字,变量字段的名字要尽可能表达出在程序中的含义. 在<重构和模式>中提到的creation,就是讲构造 ...

  5. Unity 3D调用Windows打开、保存窗口、文件浏览器

    Unity调用Window窗口 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...

  6. 完整的AJAX

    $.ajax({url:"请求路径",data:{"key":前端传入后台处理的数据},type:"post", //请求方式dataTyp ...

  7. 软件安装配置笔记(一)——Oracle及PLSQL Developer的安装与配置

    一.Oracle: Oracle服务器端或桌面端可以创建本地的Oracle数据库,而Oracle客户端是用来远程连接其他服务器或电脑上的Oracle服务器端或桌面端的,安装客户端软件只需配置网络连接文 ...

  8. Autofac解耦事件总线

    事件总线之Autofac解耦 事件总线是通过一个中间服务,剥离了常规事件的发布与订阅(消费)强依赖关系的一种技术实现.事件总线的基础知识可参考圣杰的博客[事件总线知多少] 本片博客不再详细概述事件总线 ...

  9. emacs安装

    1.我选用的是Ubuntu16.04. 2.Ubuntu安装好之后不能直接sudo apt-get install emacs,因为Ubuntu的源默认是emacs24,最好是用最新的emacs25, ...

  10. 【BZOJ1497】【NOI2006】最大获利

    最小割好劲啊 原题: 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项 ...