OpenEdv-开源电子网

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

flow_led例程中counter <= counter + 1'b1;可以改成counter <= counter + 24'b1;吗?哪个更好

[复制链接]

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
发表于 2019-1-21 10:17:32 | 显示全部楼层 |阅读模式
1金钱
例程源码如下:
[mw_shl_code=c,true]module flow_led(
    input               sys_clk  ,  //系统时钟
    input               sys_rst_n,  //系统复位,低电平有效
         
    output  reg  [3:0]  led         //4个LED灯
    );

//reg define
reg [23:0] counter;

//*****************************************************
//**                    main code
//*****************************************************
                                                                                                                                                                                                                        
//计数器对系统时钟计数,计时0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        counter <= 24'd0;
    else if (counter < 24'd10)
        counter <= counter + 1'b1;
    else
        counter <= 24'd0;
end

//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        led <= 4'b0001;
    else if(counter == 24'd10)
        led[3:0] <= {led[2:0],led[3]};
    else
        led <= led;
end

endmodule[/mw_shl_code]

如题,菜鸟请教几个若若的问题:
1、flow_led例程中counter <= counter + 1'b1;可以改成counter <= counter + 24'b1;吗?哪个更好或者说哪个对?
2、led为什么要定义成reg类型呢?定义成wire类型可以吗?如果定义成wire型,如何实现流水灯程序呢?
3、如何比较多种写法实现某一个逻辑(如:counter <= counter + 1'b1;改成counter <= counter + 24'b1;)后的网表文件是否一样呢?即生成的硬件是一样的呢?比如单片机中可以直接比较bin文件而保证程序是否一样,Quartus软件生成的代码可以直接比较jic或pof文件来达到要求吗?


谢谢啦

最佳答案

查看完整内容[请看2#楼]

1、这两种写法都可以,写成第二种写法麻烦些,好处是可以清晰的看到位宽; 2、定义成reg这是由语法决定的,告诉你个简单的方法,凡是在always语句里赋值的,定义成reg,其它是wire;3、你可以综合后查看资源报告,观察逻辑资源的占用情况。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1938

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5380
金钱
5380
注册时间
2018-10-21
在线时间
1504 小时
发表于 2019-1-21 10:17:33 来自手机 | 显示全部楼层
本帖最后由 QinQZ 于 2019-1-22 14:26 编辑

1、这两种写法都可以,写成第二种写法麻烦些,好处是可以清晰的看到位宽;
2、定义成reg这是由语法决定的,告诉你个简单的方法,凡是在always语句里赋值的,定义成reg,其它是wire;3、你可以综合后查看资源报告,观察逻辑资源的占用情况。


回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2019-1-21 20:25:21 | 显示全部楼层
哪位兄弟给解释下呢
回复

使用道具 举报

3

主题

1938

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5380
金钱
5380
注册时间
2018-10-21
在线时间
1504 小时
发表于 2019-1-21 23:39:29 来自手机 | 显示全部楼层
1、这两种写法都可以,写成第二种写法麻烦些,好处是可以清晰的看到位宽;
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2019-1-22 12:42:57 | 显示全部楼层
QinQZ 发表于 2019-1-21 10:17
2、定义成reg这是由语法决定的,告诉你个简单的方法,凡是在always语句里赋值的,定义成reg,其它是wire;3 ...

谢谢先
资源占用情况一样,或者看rtl图就太麻烦了,看资源这种方式不太靠谱吧?比较pof文件hex值一样,但是sof文件比较后有点区别
回复

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
 楼主| 发表于 2019-1-22 12:43:34 | 显示全部楼层
QinQZ 发表于 2019-1-21 23:39
1、这两种写法都可以,写成第二种写法麻烦些,好处是可以清晰的看到位宽;

好的。。。。。。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-7-7 23:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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