FPGA|CPLD|ASICwilliam hill官网
直播中

lzp961

7年用户 32经验值
擅长:电源/新能源 模拟技术 处理器/DSP
私信 关注
[讨论]

请问您有好的方法吗?

begin
     Ri<=r_max_aline[cnt1]-l_max_aline [cnt1]+1'b1; //可能不行
end
begin
    sum_row[Li] <= rows*Ri;
    sum_col[Li] <= ((r_max_aline[cnt1]+l_max_aline [cnt1])*Ri)>>1;
    num_pix[Li] <= Ri;
    l0123_max[ben_row][Li] <= l_max_aline [cnt1] ;
end
我的本意是先执行RI=???,然后就用RI,并且后面的begin end是一组可同时执行的语句。
可能不对,请问您有好的方法吗?

回帖(2)

卿小小_9e6

2022-2-19 17:58:58
//------以下思路基于:先计算RI,然后再将RI的值进行其他运算/赋值。
a.第一个begin-end计算RI,同时添加一个ri_done的信号使其赋值为1。
b.后续的RI其他运算/赋值添加判断条件,当ri_done为1时才能运算。
2 1 举报
  • lzp961: 谢谢!在一个周期下它都能运算完成吗?我想在一个周期下它们都运算完呀。
    如果运算符都是 = 的话,它们能在一个周期里完成,但第二个begin end太大,周期短不可能完成吧?
  • 卿小小_9e6 回复 lzp961: 有的运算确实无法在一个周期内运行完毕,典型代表是FPGA实现浮点运算。
    //------
    你的担忧可以通过流水线的思路来解决(自己搜一搜fpga-流水线)。
    “几个周期”不重要,只要ri_done信号和最后的有效结果是对齐的就可以。
    //------
    按照分级流水的思路,你的相关运算都可以包含运行完毕的done信号或者结果有效的valid信号,注意保持信号对齐(同步)就行。为了信号对齐,有的信号可能需要打几拍才行。

johnfir1

2022-2-22 10:44:57
你如果是想在计算r_max_aline[cnt1]+l_max_aline [cnt1])*Ri这一步时用到的RI已经是Ri<=r_max_aline[cnt1]-l_max_aline [cnt1]+1'b1的结果的话,那就必须对r_max_aline[cnt1],l_max_aline [cnt1])打拍
举报

更多回帖

发帖
×
20
完善资料,
赚取积分