网站域名重要吗,网站建设需要多少钱费用,军事新闻最新,公司建个网站要多少钱1.按键简介 按键开关是一种电子开关#xff0c;属于电子元器件类。我们的开发板上有两种按键开关#xff1a;第一种是本实验所使用的轻触式按键开关#xff0c;简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通#xff0c;当撤销压力时开关断开#xff…1.按键简介 按键开关是一种电子开关属于电子元器件类。我们的开发板上有两种按键开关第一种是本实验所使用的轻触式按键开关简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通当撤销压力时开关断开其内部结构是靠金属弹片受力后发生形变来实现通断的第二种是自锁按键 自锁按键第一次按下后保持接通即自锁第二次按下后开关断开同时开关按钮 弹出来开发板上的电源键就是这种开关。 2.实验任务 本节实验任务是使用底板上的 PL_KEY0 和 PL_KEY1 按键来控制底板上的 PL_LED0 和 PL_LED1 两个LED 的闪烁方式。没有按键按下时两个 LED 保持常亮如果按键 0 按下则两个 LED 交替闪烁如果按键 1 按下则两个 LED 同时闪烁。 3. 硬件设计 底板上按键的原理图如下图所示 PL 端的按键没有按下时对应的 IO 端口为高电平当按键按下时对应的 IO 端口变为低电平。 本实验的管脚分配如下表所示 4.程序设计 按键控制 LED 系统框图如下图所示 计数器对 50MHz 时钟进行计数从而达到计时的目的。计数器在每次计时到 0.5 秒的时候就改变 LED 的显示状态然后清零并重新开始计数。 然后根据两个按键KEY0 和 KEY1 的状态在不同的 LED 状态下分别设置 LED 的显示模式是同时闪烁或者交替闪烁。 顶层模块代码如下 1 module key_led(
2 input sys_clk ,
3 input sys_rst_n ,
4
5 input [1:0] key ,
6 output reg [1:0] led
7 );
8
9 //reg define
10 reg [24:0] cnt;
11 reg led_ctrl;
12
13 //*****************************************************
14 //** main code
15 //*****************************************************
16
17 //计数器
18 always (posedge sys_clk or negedge sys_rst_n) begin
19 if(!sys_rst_n)
20 cnt 25d0;
21 else if(cnt 25d2500_0000) //计数 500ms
22 cnt cnt 1b1;
23 else
24 cnt 25d0;
25 end
26
27 //每隔 500ms 就更改 LED 的闪烁状态
28 always (posedge sys_clk or negedge sys_rst_n) begin
29 if(!sys_rst_n)
30 led_ctrl 1b0;
31 else if(cnt 25d2500_0000)
32 led_ctrl ~led_ctrl;
33 end
34
35 //根据按键的状态以及 LED 的闪烁状态来赋值 LED
36 always (posedge sys_clk or negedge sys_rst_n) begin
37 if(!sys_rst_n)
38 led 2b11;
39 else case(key)
40 2b10 : //如果按键 0 按下则两个 LED 交替闪烁
41 if(led_ctrl 1b0)
42 led 2b01;
43 else
44 led 2b10;
45 2b01 : //如果按键 1 按下则两个 LED 同时闪烁
46 if(led_ctrl 1b0)
47 led 2b11;
48 else
49 led 2b00;
50 2b11 : //如果两个按键都未按下则两个 LED 都保持点亮
51 led 2b11;
52 default: ;
53 endcase
54 end
55
56 endmodule 代码的第 18 行的 always 块用于产生计数器计时 500ms 。代码的第 28 行的 always 块功能是每隔 500ms就给出 led 的闪烁状态控制信号。代码第 36 行的 always 块使用了一个 case 语句来根据当前按键的输入值和 led 闪烁状态控制信号来进行两个 led 的赋值。如果按键 1 按下则两个 LED 交替闪烁如果按键 0按下则两个 LED 同时亮灭交替如果两个按键都未按下则两个 LED 都保持点亮。 5.下载验证 连接开发板的电源和下载器并打开电源开关。在工程编译之后将生成的 bit 文件下载到开发板中。 下载完成之后底板上两个 PL LED 处于点亮状态。然后按下 PL_KEY0 可以看到两个 PL LED 交替闪烁 按下 PL_KEY1 可以看到两个 PL 的 LED 同时闪烁。如下图所示 由于上篇文章已经详细的给出了创建工程的步骤本文章不再重复概述。 注意 1.代码中led之所以定义为reg变量是因为要在时序逻辑中赋值不然就只能用assign来赋值比较麻烦 2.指定管脚既可以用图形化界面如上篇文章也可以直接编写文件。在该处右键选择增加新文件再选择约束文件。创建完文件后打开该文件在文件中编写约束代码。