非同于MCU的独立按键消抖动
end
1:
begin
if(key_data != {KEY_WIDTH{1'b1}})
state <= 2;
else
state <= 0;
end
2:
begin
key_flag_r <= 1'b1;
key_value <= key_data; //lock the key_value
state <= 3;
end
3:
begin
key_flag_r <= 1'b0; //read the key_value
if(key_data == {KEY_WIDTH{1'b1}})
state <= 4;
else
state <= 3;
end
4:
begin
if(key_data == {KEY_WIDTH{1'b1}})
state &模压电感器lt;= 0;
else
state <= 4;
end
endcase
end
end
//---------------------------------------
//Capture the falling endge of the key_flag
reg key_flag_r0,key_flag_r1;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
key_flag_r0 <= 0;
key_flag_r1 <= 0;
end
else
begin
key_flag_r0 <= key_flag_r;
key_flag_r1 <= key_flag_r0;
end
end
assign key_flag = key_flag_r1 & ~key_flag_r0;
endmodule
信号线说明如下:
clk
系统最高时钟
rst_n
系统复位信号
Key_data
按键信号(可根据需要配置为n位)
Key_flag
按键确认信号
Key_vaule
按键返回值
雷同上述MCU按键消抖动的状态,此模块可以模拟成一下5个状态,见state machine:
(2)循环n次计数消抖动
同样,此模块也是Bingo无数次修改测试最后成型的代码,利用了更少的资源,更适用于并行高速FPGA的性能要求。具体代码实现过程请有需要的自行分析,本模块通过相关时钟的适配,n次计数来确认按键信号,Verilog代码如下所示:
/*************************************************
* Module Name : key_scan.v
* Engineer : Crazy Bingo
* Target Device : EP2C8Q208C8
* Tool versions : Quartus II 11.0
* Create Date : 2011-6-25
* Revision : v1.0
* Description :
**************************************************/
module key_scan
#(
parameter KEY_WIDTH = 2
)
(
input clk, //50MHz
input rst_n,
input [KEY_WIDTH-1:0] key_data,
output key_flag,
output reg [KEY_WIDTH-1:0] key_value
);
//---------------------------------
//escape电感器生产 the jitters
reg [19:0] key_cnt; //scan counter
reg [KEY_WIDTH-1:0] key_data_r;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
key_data_r <= {KEY_WIDTH{1'b1}};
key_cnt <= 0;
end
else
begin
key_data_r <= key_data; //lock the key value
if((key_data == key_data_r) && (key_data != {KEY_WIDTH{1'b1}})) //20ms escape jitter
begin
if(key_cnt < 20'hfffff)
key_cn电感器生产厂家t <= key_cnt + 1'b1;
end
else key_cnt <= 0;
end
end
wire cnt_flag = (key_cnt == 20'hffffe) ? 1'b1 : 1'b0;//!!
//-----------------------------------
//sure the key is pressed
reg key_flag_r;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
key_flag_r <= 0;
key_value <= 0;
end
else if(cnt_flag)
begin
key_flag_r <= 1;
key_value <= key_data; //locked the data
end
else //let go your hand
key_flag_r <= 0; //lock the key_value
end
//---------------------------------------
//Capture the rising endge of the key_flag
reg key_flag_r0,key_flag_r1;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
key_flag_r0 <= 0;
key_flag_r电感器 设计1 <= 0;
end
else
begin
key_flag_r0 <= key_flag_r;
key_flag_r1 <= key_flag_r0;
end
扁平型电感end
assign key_flag = ~key_flag_r1 & key_flag_r0;
endmodule
平面变压器厂家 | 平面电感厂家比较难的练习题,哪位大神可以帮忙做出啊?1.下拉栏中有产品1~8
2.每个产品有9个参数,可以手动改写参数
有“修改”与“保存”两个按键
现要求:1.当我下拉栏拉到产品1时,我手动设置9个参数,按保存,可以保存数据至记
反激变压器原边电压采样反激变压器使用其中一组绕组做原边输入电压采样,在输入电压较高时为什么会有一些机型采样电压不正确,正常输入时是正确的而且只有一部分会出现这种状况
占空
基于DSP数字摄像机技术发展作为DSP领先者的美国德州仪器公司(TI)在数字照相机应用方面同样独占鳌头。首先基于TMS320C54x通用平台上实现影像压缩,然后将影像前端处理的分立器件集成为一个专用芯片,进而把两者合二为一并集成