TA的每日心情 | 开心 2019-11-19 11:07 |
---|
签到天数: 226 天 连续签到: 1 天 [LV.7]常住居民III
|
【MAXII_EPM240T100_CPLD】实验三 按键控制LED灯的亮暗
本实验解决交互问题——通过键盘上的按键控制LED灯的亮暗,这也是最基本的交互实验内容之一。代码是参考别人的学习资料上的,二板子上的所有东西与原板完全不一样。当然,学习的最快方法,就是先拿来主义,而后分析语法,学习提高,仿照代码,改吧改吧,自己写代码,升上一个台阶。
创建工程:keyTest;文件夹:keyTest;工程名称:keyTest;管脚:key5~8,对应的PIN:48,43,41,39;控制LED:LED1~LED4,PIN:49,50,51,52。
以下的过程遵循实验一的过程,在PIN设置中按照上述配置PIN。见图31。
管脚绑定,但发现led_out和sys_rstn的管脚属性为未知?但一切正常
keyTest代码:
//TestKey5~6 Ctrl LED1~4 town onOff
module keyTest (
clk, //sysClk=50Mhz
key_in, //Key Name
led_out //LEDs
);
//PORT declarations
input clk;
input [3:0] key_in;
output [3:0] led_out;
wire rst_n = 1'b1;
//Define Register
reg [19:0] count;
reg [3:0] key_scan;//GetKeyNumber
//Puth Key delayer 20ms
always @(posedge clk or negedge rst_n)//System clk up & reset down
begin
if(!rst_n)//reset=0
count <= 20'd0;//counter=0
else
begin
if(count ==20'd999_999)//20mS
begin
count <= 20'b0;//20mS end Counter
key_scan <= key_in;//Key ?
end
else
count <= count + 20'b1;//Counter + 1
end
end
//Key Dows wait
reg [3:0] key_scan_r;
always @(posedge clk)
key_scan_r <= key_scan;
wire [3:0] flag_key = key_scan_r[3:0] & (~key_scan[3:0]);//Key Puth down?
//Key n Contral led n On or Off
reg [3:0] temp_led;
always @ (posedge clk or negedge rst_n)
begin
if (!rst_n)//Reset
temp_led <= 4'b1111;//Led1~4=off
else
begin
if ( flag_key[0] ) temp_led[0] <= ~temp_led[0];//Key1 Ctrl led1 Turn Interv
if ( flag_key[1] ) temp_led[1] <= ~temp_led[1];//Key2 Ctrl led2 Turn Interv
if ( flag_key[2] ) temp_led[2] <= ~temp_led[2];//Key3 Ctrl led3 Turn Interv
if ( flag_key[3] ) temp_led[3] <= ~temp_led[3];//Key4 Ctrl led4 Turn Interv
end
end
assign led_out[0] = temp_led[0];
assign led_out[1] = temp_led[1];
assign led_out[2] = temp_led[2];
assign led_out[3] = temp_led[3];
endmodule
此文档编译后有12个警告,但下载一切正常,结果见照片32,33,34,35。
上边的照片分别是按下按键5,6,7,8与之对应的LED1,2,3,4分别亮进和按。乒乓关系&mdash;&mdash;按一下亮,再按一下灭。 |
|