信号滤波模块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( ...
随机推荐
- python day05作业
- 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 ...
- grep命令相关用法
grep命令相关参数: -i:忽略大小写 --color:高亮显示匹配到的信息 -v:反向查找,没匹配到的行显示出来 -o:只显示被模式匹配到的串本身 正则表达式: .*:任意长度的任意字符,贪婪模式 ...
- msp430板子接485接口的气体传感器问题及处理
现象:板子的485有问题(能收但是不能发) 485的方向位没有设置因此485芯片一直处于接收的状态,而发送不了处理方法:在需要发送时,把485方向位置于发送,发送完后再把方向位置回接收.但注意,要在发 ...
- selenium和PhantomJS的使用
利用selenium来进行爬取数据 import time from selenium import webdriver # 创建phantomjs浏览器对象 driver = webdriver.P ...
- D:\yyy\UNetSegmentation_code_20180301\data\train
key1 numpy.save("filename.npy",a) 利用这种方法,保存文件的后缀名字一定会被置为.npy,这种格式最好只用 numpy.load("fil ...
- HDU 1087:Super Jumping! Jumping! Jumping!(LIS)
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- BFS模板
bool visit[maxn];///访问标记 ,,,,-,,-,}; ///向左上右下,左下,右上,右下,左上 ,,,-,-,,,-}; struct node { int r; int c; i ...
- XTU1254 Blance 如何实现称出1∼n 克的物品,请问最少需要几颗砝码?
题目描述 小明有一架天平,小明想称出1∼n 克的物品,请问最少需要几颗砝码? 比如小明想称出1∼4 克的物品,需要2颗砝码,为1和3克. balance 输入 第一行是一个整数T(1≤T≤10000) ...
- java-代码块-局部代码块、构造代码块、静态代码块
1.代码块概述: 在Java中,使用{ }括起来的代码被称为代码块. 2.代码块分类: 根据其位置和声明的不同,可以分为局部代码块,构造代码块.静态代码块和同步代码块(多线程). 3.常见代码块的应用 ...