查看: 1651|回复: 0

【DECA开发板测试】二、Quartus II 16.1的安装和首个实验按键左右循环8LED

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

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2017-3-17 08:52:13 | 显示全部楼层 |阅读模式
    分享到:
    相关阅读:【DECA开发板测试】一、DECA开发板开箱和加电首试
    【DECA开发板测试】二、Quartus II 16.1的安装和首个实验按键左右循环8LED
    在官网下载了Quartus II 16.1以及必要的Device,由于板载的芯片是MAX10系列的,因此至少需要下载MAX10的设备Device。这两个安装到不太费劲,而在安装完成后连接UXB口才发现电脑不认USB——不可识别的设备。按照Quartus的规约,驱动应该在Quartus软件目录下的\16.1\quartus\drivers下边,但是也还是不成功。我的系统式64位Windows 7版本。这里介绍一种可行的方法:
    重新开机,按压F8键,在开始菜单中选择安全模式,进入安全模式后再在我的电脑/属性/硬件设备 中找到不可识别的设备,重新安装驱动之后,再重新启动计算机就Ok了!我也是如此,才将驱动安装成功。具体截图就省略了。
    LED循环在任意一个单片机上就可以轻松的实现,FPGA是否有大才小用的嫌疑呢?当然有,只不过对我这个新手来说,还是先从基本的试试,成功后再高级的较稳妥。
    创建新项目:目录keyLed、项目名称keyLed,尽管开发板有两个按键,但本程序只需要一个即可。
    本实验分两步:首先实现8个LED单个左右来回循环点亮,见照片静止20,

    单个LED左右循环,相机拖影好像有3个

    动画21,拖影好像有多个点亮
    此代码与下边的差不多,就不粘出来了。接着完成由有按键控制反向循环点亮,由于代码很简单,直接给出了,实现的结果是:正常右向左循环,按下键左向右循环。管脚配置见照片22,

    管脚绑定
    代码如下:
    //TestKey0~1 Ctrl LED1~8 town onOff
    module ledKey(
    clk, //sysClk=50Mhz
    key_in, //Key Name
    led //LEDs
    );
    //PORT declarations
    input clk;
    input [1:0] key_in;
    output [7:0] led;
    wire rst_n = 1'b1;
    //Define Register
    reg [31:0] timer;
    //Timer delayer
    always @(posedge clk or negedge rst_n)
    begin
    if (~rst_n)
      timer <= 0;//timer=0
    else if (timer == 32'd39_999_999)//sysClock=50MHz
      timer <= 0;//timer Clear
    else
      timer <= timer + 1'b1;//timer++
    end
    //Key Dows Testt
    reg [1:0] key_scan;//GetKeyNumber
    always @(posedge clk)
    key_scan <= 2'b11;//Key=High
    wire [1:0] flag_key = key_scan[1:0] & (~key_in[1:0]);//Key Puth down?
    //Key n Contral led n On or Off
    reg [7:0] led;
    always @ (posedge clk or negedge rst_n)
    begin
    if (!rst_n)//Reset
      led <= 8'b11111111;//Led1~8=off
    else
      begin
       if (~flag_key[0])
       begin
        if (timer == 32'd4_999_999)
         led <= 8'b11111110; //LED1
        else if (timer == 32'd9_999_999)
         led <= 8'b11111101; //LED2
        else if (timer == 32'd14_999_999)
         led <= 8'b11111011; //LED3
        else if (timer == 32'd19_999_999)
         led <= 8'b11110111; //LED4
        else if (timer == 32'd24_999_999)
         led <= 8'b11101111; //LED5
        else if (timer == 32'd29_999_999)
         led <= 8'b11011111; //LED6
        else if (timer == 32'd34_999_999)
         led <= 8'b10111111; //LED7
        else if (timer == 32'd39_999_999)
         led <= 8'b01111111; //LED8
       end
       else
       begin
        if (timer == 32'd4_999_999)
         led <= 8'b01111111; //LED8
        else if (timer == 32'd9_999_999)
         led <= 8'b10111111; //LED7
        else if (timer == 32'd14_999_999)
         led <= 8'b11011111; //LED6
        else if (timer == 32'd19_999_999)
         led <= 8'b11101111; //LED5
        else if (timer == 32'd24_999_999)
         led <= 8'b11110111; //LED4
        else if (timer == 32'd29_999_999)
         led <= 8'b11111011; //LED3
        else if (timer == 32'd34_999_999)
         led <= 8'b11111101; //LED2
        else if (timer == 32'd39_999_999)
         led <= 8'b11111110; //LED1
       end
      end
    end
    endmodule
    下载时分成两种情况:选择.sof文件时,仅仅输出到RAM区,断电后恢复原来的程序;选择.pof文档时输出到内部EPROM区,重新加电程序不变。无论程序大小,后者的编译下载时间较长,大约需要若干分钟,只有重新加电后才看到结果;而前者非常快,像上述代码,点击下载后立马执行看到结果。选择下载文件见照片23。

    下载选择,保存位置不一样
    因此在做代码测试时,下载.sof文档比较合适,都无问题后再下载.pof文档到EPROM区长期保留。视屏见连接:https://v.youku.com/v_show/id_XMjY0MjgyMjI4OA==.htm...
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-12-21 10:55 , Processed in 0.121824 second(s), 17 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.