搜索
bottom↓
回复: 29

altera 异步复位比同步复位占用资源多?是什么鬼

[复制链接]

出10入12汤圆

发表于 2018-11-16 17:12:34 | 显示全部楼层 |阅读模式
异步复位程序
wire clk,rst_n;
my_clock  Clock_U1(.e_clk(e_clk), .e_rst_n(e_rst_n), .clk(clk) , .rst_n(rst_n)); //PLL 生成稳定时钟,并输出异步复位同步释放信号


//wire [7:0] cnt;
reg [31:0] plus_r;
reg cmp3_r,cmp4_r;

assign cmp3 = cmp3_r;
assign cmp4 = cmp4_r;
always @(posedge clk or negedge rst_n)
begin
        if(!rst_n)
                begin
                plus_r<=1'b0;
                cmp4_r <= 0;
                cmp3_r <= 0;
                end
        else
                begin
                        if(plus_r==32'd240000000 )
                           begin
                                cmp4_r <= ~cmp4_r;
                                cmp3_r <= ~cmp3_r;
                                plus_r <= 1'b0;
                           end
                        else
                                plus_r <= plus_r+1'b1;
                end
end
endmodule
占用资源

同步复位
wire clk,rst_n;
my_clock  Clock_U1(.e_clk(e_clk), .e_rst_n(e_rst_n), .clk(clk) , .rst_n(rst_n)); //PLL 生成稳定时钟,并输出异步复位同步释放信号
//wire [7:0] cnt;
reg [31:0] plus_r;
reg cmp3_r,cmp4_r;

assign cmp3 = cmp3_r;
assign cmp4 = cmp4_r;
always @(posedge clk /*or negedge rst_n*/)
begin
        if(!rst_n)
                begin
                plus_r<=1'b0;
                cmp4_r <= 0;
                cmp3_r <= 0;
                end
        else
                begin
                        if(plus_r==32'd240000000 )
                           begin
                                cmp4_r <= ~cmp4_r;
                                cmp3_r <= ~cmp3_r;
                                plus_r <= 1'b0;
                           end
                        else
                                plus_r <= plus_r+1'b1;
                end
end
endmodule
占用资源

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出10入12汤圆

 楼主| 发表于 2018-11-16 17:13:14 | 显示全部楼层
不合常理啊!!!!!!!!!一小段代码 差了10个logic

出0入0汤圆

发表于 2018-11-16 17:26:17 | 显示全部楼层
最少多几个或门吧

出0入22汤圆

发表于 2018-11-16 17:27:32 来自手机 | 显示全部楼层
关注,目前还没有研究的这么深。楼主能不能讲讲同步复位和异步复位的区别?

出0入8汤圆

发表于 2018-11-16 17:29:01 | 显示全部楼层
印象中altera的寄存器有专门的异步复位端啊

出10入12汤圆

 楼主| 发表于 2018-11-16 17:30:19 | 显示全部楼层
本帖最后由 wowangru 于 2018-11-16 17:31 编辑

同步复位的  

异步复位的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出10入12汤圆

 楼主| 发表于 2018-11-16 17:31:10 | 显示全部楼层
prow 发表于 2018-11-16 17:29
印象中altera的寄存器有专门的异步复位端啊

异步复位确实用了异步复位口  但是问题是  可视  异步复位使用的资源要多点

出0入0汤圆

发表于 2018-11-16 17:43:22 来自手机 | 显示全部楼层
猜测一下,因为同步复位复位部分和下面计数到结束时候plus0置零是可以服用的?

出10入12汤圆

 楼主| 发表于 2018-11-16 18:32:55 | 显示全部楼层
没搞懂!!!!!!!!!

出100入85汤圆

发表于 2018-11-16 18:58:31 来自手机 | 显示全部楼层
看代码应该是运动控制那块的

出0入442汤圆

发表于 2018-11-16 20:31:58 | 显示全部楼层
whatcanitbe 发表于 2018-11-16 18:58
看代码应该是运动控制那块的

LZ纯粹是来逗13的。真正的FPGA工程,大量信号是没有复位的——加了复位资源占用率蹭蹭往上涨。所以我只给关键信号加复位——如状态机,输出控制信号,等等。然后,工程面积大了看占比才有意义,LZ那几行代码来看资源占用意义几乎没有。实际工程中资源共享,资源复用是相当复杂的。

出10入12汤圆

 楼主| 发表于 2018-11-16 21:26:11 | 显示全部楼层
本帖最后由 wowangru 于 2018-11-17 00:34 编辑
wye11083 发表于 2018-11-16 20:31
LZ纯粹是来逗13的。真正的FPGA工程,大量信号是没有复位的——加了复位资源占用率蹭蹭往上涨。所以我只给 ...

  
收回刚得话! 没错是有些要复位有些不需要复位

出0入442汤圆

发表于 2018-11-16 21:33:35 来自手机 | 显示全部楼层
wowangru 发表于 2018-11-16 21:26
我不知道你什么底气说这话!!!!!   虽然我不懂    但是我也知道你说的是原则性错误!!!!    fpga ...

等你做了4年工程之后欢迎你再来跟我辩论

出10入12汤圆

 楼主| 发表于 2018-11-16 21:48:28 | 显示全部楼层
wye11083 发表于 2018-11-16 21:33
等你做了4年工程之后欢迎你再来跟我辩论

好吧   坐等其他网友来和你辩论!!!!!   顺便了解下寄存器没有初值怎么解决!

出0入0汤圆

发表于 2018-11-16 21:56:54 来自手机 | 显示全部楼层
我也没给复位。。。反正是循环。

出10入12汤圆

 楼主| 发表于 2018-11-16 22:18:43 | 显示全部楼层
我指的当然不仅是我发的这个模拟程序

出0入442汤圆

发表于 2018-11-16 22:53:43 来自手机 | 显示全部楼层
wowangru 发表于 2018-11-16 21:48
好吧   坐等其他网友来和你辩论!!!!!   顺便了解下寄存器没有初值怎么解决! ...

fpga上电时会有内置gtr和gts来自动设初值。就是你写的reg a=1这类。

出10入12汤圆

 楼主| 发表于 2018-11-16 23:01:28 | 显示全部楼层
wye11083 发表于 2018-11-16 22:53
fpga上电时会有内置gtr和gts来自动设初值。就是你写的reg a=1这类。

altera的fpga 手册上说上电都wire有初值,  但是寄存器初值不确定

出0入0汤圆

发表于 2018-11-16 23:05:21 | 显示全部楼层
zxq6 发表于 2018-11-16 17:27
关注,目前还没有研究的这么深。楼主能不能讲讲同步复位和异步复位的区别? ...

Asynchronous reset: reset register without clock activity
Synchronous reset: reset register at clock edge(positive or negative edge)

出0入0汤圆

发表于 2018-11-16 23:07:25 | 显示全部楼层
wowangru 发表于 2018-11-16 17:30
同步复位的  

异步复位的

就我之前從FPGA FAE那邊得到的訊息是同步reset會比異同步reset省面積,這與FPGA的基本LUT設計有關,A 或 X 家都是這種狀況。

出0入442汤圆

发表于 2018-11-16 23:11:36 来自手机 | 显示全部楼层
jarodzz 发表于 2018-11-16 23:07
就我之前從FPGA FAE那邊得到的訊息是同步reset會比異同步reset省面積,這與FPGA的基本LUT設計有關,A 或  ...

s6根据我的工程实测,同步复位面积更大。fae史是在传达他所了解的东西,但是他并不一定实际用过!!

出0入0汤圆

发表于 2018-11-16 23:12:11 | 显示全部楼层
wye11083 发表于 2018-11-16 21:33
等你做了4年工程之后欢迎你再来跟我辩论

正確來說應該把電路分成control電路和datapath電路。
control電路是一般都需要reset到initial condtion,datapath電路就不用reset。
不過有個時候 control information 是藏在 data stream,這時候前級的datapath pipeline就需要reset。

出0入442汤圆

发表于 2018-11-16 23:14:49 来自手机 | 显示全部楼层
jarodzz 发表于 2018-11-16 23:12
正確來說應該把電路分成control電路和datapath電路。
control電路是一般都需要reset到initial condtion, ...

是的。我只给control加额外的复位。复位和置位fpga有专用的引脚连接dff的r和s端子,所以异步复位不占用lut,只占用布线资源。而同步复位是在dff前面lut里插入一个mux,复杂设计会有显著开销。所以我不推荐同步复位。同步复位也同样会导致时序跟踪困难,容易因模块复位不同以及相互依赖关系而出错。

出0入0汤圆

发表于 2018-11-16 23:19:11 | 显示全部楼层
wye11083 发表于 2018-11-16 23:11
s6根据我的工程实测,同步复位面积更大。fae史是在传达他所了解的东西,但是他并不一定实际用过!! ...

那以兄臺的實驗結果為主,畢竟我沒有親自實驗過,因為FPGA對我而言是驗證工具。

出10入12汤圆

 楼主| 发表于 2018-11-16 23:26:29 | 显示全部楼层
刚才的测试确实是异步更占布线资源,寄存器数量都一样。   
重新写了一个简单分频程序,应该这就是所谓的数据流吧  二位意思我明白,  对初值没要求的就不用复位了,不过我发现用不用复位这个程序寄存器数量都一样。thanks
// Description        : 通过外部时钟 分频生成多种不同频率
//             :
//        input       :clk:外部时钟信号  以50M为准
//        output      :clk_781250,clk_97656,clk_12135,clk_1516,clk_94 不同输出频率
// Additional Comments        :  
////////////////////////////////////////////////////////////////////////////////
module clock_div(input clk, output clk_781250, output clk_97656,output clk_12135,output clk_1516,output clk_94);

reg [18:0]cnt;
always @ (posedge clk )
begin
        cnt<=cnt+1'b1;
end
assign clk_781250 = cnt[6];
assign clk_97656 = cnt[9];
assign clk_12135 = cnt[12];
assign clk_1516 = cnt[15];
assign clk_94 = cnt[18];

endmodule

出10入12汤圆

 楼主| 发表于 2018-11-16 23:40:25 | 显示全部楼层
我想请问 quartus如何看单个子模块资源占用情况呢

出10入12汤圆

 楼主| 发表于 2018-11-16 23:44:55 | 显示全部楼层
已经找到了  !!!藏的正好,, 百度也搜索不到!!!utilization里面

出0入442汤圆

发表于 2018-11-16 23:53:47 来自手机 | 显示全部楼层
jarodzz 发表于 2018-11-16 23:19
那以兄臺的實驗結果為主,畢竟我沒有親自實驗過,因為FPGA對我而言是驗證工具。 ...

是的。我这fpga是上产品用的。。用了几年时间才慢慢把框架搞成熟。从0到有,从有到慢慢改bug打补丁完善功能。。硬件模块攒了上百个,代码手敲了几mb,关联硬件库dll源代码也堆了差不多3w行吧。找个bug都无比吃力(硬件这块人少)。

出10入12汤圆

 楼主| 发表于 2018-11-17 00:00:20 | 显示全部楼层
wye11083 发表于 2018-11-16 23:53
是的。我这fpga是上产品用的。。用了几年时间才慢慢把框架搞成熟。从0到有,从有到慢慢改bug打补丁完善功 ...


设计在于积累!!! 除了刚学的fpga  其他 程序全靠复制。。。。。 如果没以前程序复制 连个小程序都可能写不出来!!!!!学得多忘得多。。。代码不再多 在于严谨!   老程序很好用  重来没让我失望

出10入12汤圆

 楼主| 发表于 2018-11-17 00:35:05 | 显示全部楼层
wye11083 发表于 2018-11-16 23:53
是的。我这fpga是上产品用的。。用了几年时间才慢慢把框架搞成熟。从0到有,从有到慢慢改bug打补丁完善功 ...

收回刚得话!你说的没错,根据需要复位!我想的太武断!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 18:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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