关于求余%,乘*除/符号运用

wall_e   2011-10-18 09:26 楼主

test_freq[31:0];

base_cnt_reg[31:0];

test_cnt_reg[31:0];

test_freq <= 50000000 * test_cnt_reg / base_cnt_reg;和这句

 test_freq <= 50000000 / base_cnt_reg * test_cnt_reg ; 有什么区别吗? 这两句在数学上不是等价的吗?为什么我在编译的时候前一句 会出现不同的结果?

 

还有关于求余符号的运用;

//  bai_wan <= data / 1000000;
//  shi_wan <= data % 1000000 / 100000;
//  wan     <= data % 100000 / 10000;
//  qian    <= data % 10000 / 1000;
//  bai     <= data % 1000 / 100;
//  shi     <= data % 100 / 10;
//  ge      <= data % 10;
  
  bai_wan <= data / 1000000;
  shi_wan <= data % 1000000 / 100000;
  wan     <= data % 1000000 % 100000 / 10000;
  qian    <= data % 1000000 % 100000 % 10000 / 1000;
  bai     <= data % 1000000 % 100000 % 10000 % 1000 / 100;
  shi     <= data % 1000000 % 100000 % 10000 % 1000 % 100 / 10;
  ge      <= data % 1000000 % 100000 % 10000 % 1000 % 100 % 10;

 

注释掉的部分和没有注释的部分编译结果中所用的逻辑资源是不一样的,其中注释了的部分用的逻辑资源多,没有注释的部分用的资源少。求解释。

 

努力就有不清不楚的收获。

回复评论 (1)

这个肯定有差别的,FPGA执行的都是二进制运算,相当是整数运算,先乘后除法同先除后乘结果肯定不一样。

一个为理想不懈前进的人,一个永不言败人! http://shop57496282.taobao.com/ 欢迎光临网上店铺!
点赞  2011-10-18 12:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复