信号滤波模块verilog代码---UNLOCK,LOCK状态机方式
信号滤波模块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状态机方式的更多相关文章
- Verilog代码规范I
Verilog代码规范I "规范"这问题 "规范"这个富含专业气息的词汇(个人感觉),其实规范这种东西,就是大家都约定熟成的东西,一旦你不遵守这个东西,专业人士 ...
- 总线读写---verilog代码
总线读写---verilog代码 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...
- BT.656 NTSC制式彩条生成模块(verilog)
BT.656 NTSC制式彩条生成模块(verilog) 1.知识储备 隔行扫描是将一副图像分成两场扫描,第一场扫描第1,2,5,7...等奇数行,第二场扫描2,4,6,8...等偶数行,并把扫奇数行 ...
- SDRAM驱动篇之简易SDRAM控制器的verilog代码实现
在Kevin写的上一篇博文<SDRAM理论篇之基础知识及操作时序>中,已经把SDRAM工作的基本原理和SDRAM初始化.读.写及自动刷新操作的时序讲清楚了,在这一片博文中,Kevin来根据 ...
- 分享:FIFO 同步、异步以及Verilog代码实现
FIFO 很重要,之前参加的各类电子公司的逻辑设计的笔试几乎都会考到. FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线 ...
- Verilog代码和FPGA硬件的映射关系(一)
代码和硬件之间的映射关系是一个很奇妙的过程,也展现出人类的智慧.单片机内部的硬件结构都是固定的,无法改变,我们通过代码操作着寄存器的读写,来执行各种复杂的任务.FPGA的硬件结构并不像单片机一样是固定 ...
- 学会使用Hdlbits网页版Verilog代码仿真验证平台
给大家推荐一款网页版的 Verilog代码编辑仿真验证平台,这个平台是国外的一家开源FPGA学习网站,通过“https://hdlbits.01xz.net/wiki/Main_Page” 地址链接进 ...
- 用PCA(主成分分析法)进行信号滤波
用PCA(主成分分析法)进行信号滤波 此文章从我之前的C博客上导入,代码什么的可以参考matlab官方帮助文档 现在网上大多是通过PCA对数据进行降维,其实PCA还有一个用处就是可以进行信号滤波.网上 ...
- -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中
本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait( ...
随机推荐
- LeetCode--1、26、27、35、53 Array(Easy)
1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to ...
- java pojo类
POJO POJO是Plain OrdinaryJava Object的缩写 可以当作简单的Java对象 实际就是普通JavaBeans 外文名 POJO 实际意义 普通JavaBeans 全 ...
- java用字符io流复制文件
一.小文件一次快速读写 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...
- Python之路PythonThread,第四篇,进程4
python3 进程/线程4 进程间同步互斥方法: from multiprocessing import Lock 创建 进程锁对象 lock = Lock() lock.acquire() 给 ...
- 数据结构HUFFman求权值
#include <bits/stdc++.h>using namespace std;priority_queue< int, vector <int>, greate ...
- multi-head attention
■ 论文 | Attention Is All You Need ■ 链接 | https://www.paperweekly.site/papers/224 ■ 源码 | https://githu ...
- Codeforces 978E:Bus Video System
题目链接:http://codeforces.com/problemset/problem/978/E 题意 一辆公交车,在每站会上一些人或下一些人,车的最大容量为w,问初始车上可能有的乘客的情况数. ...
- vim 介绍安装 复制 剪切 粘贴
1. vim 产生:对于linux 文件的编辑,最初是vi,然后对于其功能的扩展,就产生了vim vim 的安装 yum install vim 2.光标的移动 用得最多的就是方向键上的 上下左右,和 ...
- 矩阵快速幂(以HDU1757为例)
对于数据量大的求余运算,在有递推式的情况下,可以构造矩阵求解. A - A Simple Math Problem Lele now is thinking about a simple functi ...
- 【java编程】Java魔法类:Unsafe应用解析
转载来源:https://tech.meituan.com/2019/02/14/talk-about-java-magic-class-unsafe.html 前言 Unsafe是位于sun.mis ...