触摸按键控制LED灯

目录

1.理论

2.代码

[2.1 touch_ctrl_led.v](#2.1 touch_ctrl_led.v)

[2.2 tb_touch_ctrl_led](#2.2 tb_touch_ctrl_led)


1.理论

以上的波形图的touch_flag是采用组合逻辑的方式产生的。

以上的touch_flag是采用时序逻辑产生的,时序逻辑会延迟一拍。

以上是上升沿和下降沿的组合逻辑和时序逻辑实现,逻辑或的写法刚好是逻辑与的两个寄存器的值反过来。

2.代码

2.1 touch_ctrl_led.v

复制代码
module touch_ctrl_led(
	input 	wire		sys_clk		,
	input 	wire 		sys_rst_n		,
	input 	wire 		touch_key		,
	
	output 	reg			led		
);

reg touch_key_1;
reg touch_key_2;
wire touch_flag; //因为没有延迟一拍所以是组合逻辑,wire形

//边沿检测的作用就是能够准确识别出单比特信号的上升沿或下降沿
assign touch_flag=((touch_key_1==1'b0)&&(touch_key_2==1'b1));

always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		begin
			touch_key_1<=1'b1;
			touch_key_2<=1'b1;
		end
	else if(sys_rst_n==1'b1)
		begin
			touch_key_1<=touch_key;
			touch_key_2<=touch_key_1;
		end
		
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		led<=1'b1;
	else if(touch_flag==1'b1)
		led<=~led;
	else
		led<=led;
		
endmodule

2.2 tb_touch_ctrl_led

复制代码
`timescale 1ns/1ns
module tb_touch_ctrl_led();

reg sys_clk;
reg sys_rst_n;
reg touch_key;
wire led;

initial
	begin
		sys_clk=1'b1;
		sys_rst_n=1'b0;
		touch_key=1'b1;
		#20
		sys_rst_n=1'b1;
		#200
		touch_key=1'b0;
		#2000
		touch_key=1'b1;
		#1000
		touch_key=1'b0;
		#3000
		touch_key=1'b1;
	end
	
	
always #10 sys_clk=~sys_clk;

touch_ctrl_led touch_ctrl_led_inst(
	.sys_clk	(sys_clk),
    .sys_rst_n  (sys_rst_n),
    .touch_key  (touch_key),
	.led		(led)

);  
   	
endmodule

2.3 仿真结果

相关推荐
Eloudy13 小时前
FPGA (QSFP28 + CMAC US+ RoCEv2) 与 Ubuntu22 + Mellanox 网卡直连分析
fpga开发
szxinmai主板定制专家14 小时前
RK3568+FPGA高速并行采集|半导体探针测试设备多通道同步数据采集系统设计
人工智能·嵌入式硬件·计算机视觉·fpga开发
ARM|X86+FPGA工业主板厂家2 天前
RK3588+FPGA+EtherCAT异构架构解析|工业场景如何同时保住AI算力与微秒级运动实时性
人工智能·fpga开发·架构
zlinear数据采集卡2 天前
从“脏信号”到“纳伏级纯净”:硬核拆解DABL7606的多级抗混叠滤波与24位过采样算法
arm开发·科技·嵌入式硬件·fpga开发·开源
尤老师FPGA2 天前
HDMI数据的接收发送实验(二十)
fpga开发
千寻xun3 天前
三、实战篇-NVME SSD控制之FPGA实现(一)
fpga开发·nvme ssd·nvme协议
XMAIPC_Robot3 天前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
upper20203 天前
从零开始设计riscv cpu记录之七
fpga开发·riscv·riscv设计·btb·分支预测
ARM|X86+FPGA工业主板厂家3 天前
AI视觉跟随运动控制实战|RK3588 NPU检测+FPGA EtherCAT多轴联动精准跟随方案,适用于半导体视觉对位等
人工智能·fpga开发·硬件工程·ethercat·实时系统
XMAIPC_Robot3 天前
RK3588+FPGA半导体设备量产踩坑大全|发热、时序漂移、推理抖动、成像干扰、EMC干扰方案
人工智能·嵌入式硬件·fpga开发·arm+fpga