german010 发表于 2013-3-18 17:00:57

接收一个0到100的数据,verilog如何实现按数据段分支?

接收一个0到100的数据,verilog如何实现按数据段分支?
比如    接收数据为x,当x在0到50之间 进行方法1处理;
                                 当x在50到80之间 进行方法2处理;
                                 当x在80到100之间 进行方法3处理;
如何实现比较好 ?

蓝色风暴@FPGA 发表于 2013-3-18 17:16:39

一个case不就搞定了

tangkuan660 发表于 2013-3-18 17:21:41

稍微写一下,看下面的是否合格:
always@(posedge i_clk or negedge i_rst_n)
begin
    if(~i_rst_n)
       out<=3'b000;
    else if(x<50)
       out<=3'b001;
    else if(x<80)
       out<=3'b010;
   else if(x<100)
       out<=3'b011;
   else
      out<=out;
end
         

wye11083 发表于 2013-3-18 17:34:18

考虑3L的方法,但是尽量用最少的比特判断,否则性能大打折扣。

german010 发表于 2013-3-19 12:55:08

蓝色风暴@FPGA 发表于 2013-3-18 17:16 static/image/common/back.gif
一个case不就搞定了

case能搞定吗,看到被case的数据 都是一个值,而不是一个区间?

hymeng98 发表于 2013-3-19 23:33:06

german010 发表于 2013-3-19 12:55:08 static/image/common/back.gif

case能搞定吗,看到被case的数据 都是一个值,而不是一个区间?

用casex呗,只不过分段的范围被限制了。
页: [1]
查看完整版本: 接收一个0到100的数据,verilog如何实现按数据段分支?