查看: 1217|回复: 0

​【MAXII_EPM240T100_CPLD】实验三 按键控制LED灯的亮暗

[复制链接]
  • TA的每日心情
    开心
    2019-11-19 11:07
  • 签到天数: 226 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2017-2-13 09:01:39 | 显示全部楼层 |阅读模式
    分享到:
    【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分别亮进和按。乒乓关系——按一下亮,再按一下灭。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 16:20 , Processed in 0.124352 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.