OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5008|回复: 4

[XILINX] if else 分支中编写多条语句报错

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-11-25
在线时间
2 小时
发表于 2022-11-27 09:39:06 | 显示全部楼层 |阅读模式
下边是按键控制led等闪烁的fpga代码。

遇到的问题是:程序的注释区域,由于在一个分支中需要两条语句(1、计数器清零。2、led口切换电平),所以增加begin和end。但是这两条语句必须注视条一条才能综合通过,否则报错。而且不显示详细的错误信息。
请高手帮忙看看,怎么回事?

module key2led(
    input sys_clk,
    input key1,
    input key2,
    output reg [1:0] led
);
    reg [24:0] cnt;

    initial begin
        led = 2'b11;
    end

    always @(posedge sys_clk or negedge key1 or negedge key2) begin
        if(!key1)
            led <= 2'b10;
        else if(!key2)
            led <= 2'b11;
        else if(cnt < 25'd2500_0000)
            cnt <= cnt + 1'b1;
        else
        begin
// 这里有两条语句,必须注释掉一条才能综合分析通过,否则报错。并没有错误的原因。
           cnt <= 26'd0;
//            if(key1 && key2)
//                led <= 2'b11;
//            else
//                led <= ~led;
        end            
    end
endmodule





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2013

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5617
金钱
5617
注册时间
2018-10-21
在线时间
1591 小时
发表于 2022-11-28 09:12:18 | 显示全部楼层
always敏感变量里写一个你的实际的系统复位信号,不要写用户KEY
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-11-25
在线时间
2 小时
 楼主| 发表于 2022-11-28 15:00:45 | 显示全部楼层
QinQZ 发表于 2022-11-28 09:12
always敏感变量里写一个你的实际的系统复位信号,不要写用户KEY

这里只是一个测试的例子,不需要复位功能。一定要写复位信号吗?
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-11-25
在线时间
2 小时
 楼主| 发表于 2022-11-28 15:02:53 | 显示全部楼层
tieshui 发表于 2022-11-28 15:00
这里只是一个测试的例子,不需要复位功能。一定要写复位信号吗?

而且,报错并不是key1和key2引起的。而是,begin与end之间多条语句引起的。如果把 cnt<=26'd0 注释掉,把下边的注释放开。代码也可以通过。
回复 支持 反对

使用道具 举报

2

主题

136

帖子

0

精华

高级会员

Rank: 4

积分
661
金钱
661
注册时间
2020-4-21
在线时间
85 小时
发表于 2022-11-29 09:37:37 | 显示全部楼层
不建议这种写法,可以分开写
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表