码迷,mamicode.com
首页 > 其他好文 > 详细

FPGA编程技巧与经验笔记

时间:2015-08-07 19:23:30      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

1、位拼接运算必须指明位数,若不指明则隐含着为32位的二进制数【即整数】。 例:{1,0} = 64‘h00000001_00000000; 不等于2’b10;

2、%取模运算或者取余运算可以用“与”操作实现快速求余运算。

     例如a%4,则可以化简为a&3.详解:5%4 = 4‘b0101%4‘b0100      //因为余数比4小,所以余数的bit2位及以上位都为0,只有bit0、bit1有数据,且与原来的数相 同                                             

                                                           = 4‘b0101&4’b0011  = 4‘b0001 = 1;

     故只要取模的数都是2^n的数都可以这样做。 好处是:位操作只需要一个指令周期即可完成,而大部分的C编译器的“%”运算均是调用子程序来完成的,代码长、执行速度慢。

3、%操作同普通操作不同,更为严格。要求:%两侧都要为整形数据,并且结果值的符号与采用取余运算里的第一个数的符号。

     如果被取余的操作数为负数,取余数为正数,即b%a,b<0,a>0,a、b都为integer型,

    则结果会怎样?用modelsim仿真结果如下:

   技术分享技术分享  

可以看出商和余数的符号与被取余的数的符号相同。

 

4、幂的运算符号为**,而^的运算符号指 按位异或  或者 归约异或

 ^按位异或:二元异或,有两个操作数位于两侧。如果某位为x或者z,则该位结果为x,否则相同为0,不同为1.

  4‘b0110^4‘b1000 = 4‘b1110;

^归约异或:一元操作数,如果某个位的值为x或者Z,则结果为X,如果操作数中有偶数个1,则结果为0,否则为1

        ^4’b0011 = 0;

        ^4‘b0001 = 1; 

FPGA编程技巧与经验笔记

标签:

原文地址:http://www.cnblogs.com/fhyfhy/p/4601463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!