Verilog 中的 ^ 的用法 您所在的位置:网站首页 coverslips是什么意思 Verilog 中的 ^ 的用法

Verilog 中的 ^ 的用法

2024-01-21 08:15| 来源: 网络整理| 查看: 265

复习函数和任务中总遇到^,让我疑惑,

cal_parity = ^address;

这个不是异或吗?怎么可以这么用呢?

难道意思是:cal_parity = cal_parity ^ address(类似于C语言),事实还真不是!

这里就来总结下^的用法:

(1)奇偶判断

^a操作就是将a中的每一位按位逐一进行异或,例如a=4'b1010,则b=1^0^1^0=0,由此可以判断a中为1的位数是奇数还是偶数,是一个便捷的操作。

开头遇到的问题就是这个问题,是按位异或。

(2)交换两个整数的值而不必用第三个参数 a = 9; b = 11; a=a^b; 1001^1011=0010 b=b^a; 1011^0010=1001 a=a^b;  0010^1001=1011 a = 11; b = 9;

这种用法就是两个数的异或。

(3)格雷码(Gray code)

格雷码(Gray code)是由贝尔实验室的Frank Gray在1940年提出,用于在PCM(Pusle Code Modulation)方法传送讯号时防止出错,并1953年三月十七日取得美国专利。格雷码是一个数列集合,相邻两数间只有一个位元改变,为无权数码,且格雷码的顺序不是唯一的。直接排列以二进制为0值的格雷码为第零项,第一项改变最右边的位元,第二项改变右起第一个为1的位元的左边位元,第三、四项方法同第一、二项,如此反覆,即可排列出n个位元的格雷码。

1、自然二进制码转换成二进制格雷码 自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。 2、二进制格雷码转换成自然二进制码  二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。

 二进制数转格雷码 (假设以二进制为0的值做为格雷码的0) 格雷码第n位 = 二进制码第(n+1)位+二进制码第n位。不必理会进制。

Verilog 代码:gray=(binary>>1)^binary;

格雷码转二进制数 二进制码第n位 = 二进制码第(n+1)位+格雷码第n位。因为二进制码和格雷码皆有相同位数,所以二进制码可从最高位的左边位元取0,以进行计算。

      verilog 代码://------假设 reg [n-1] gray,binary;

             integer i;

             for(i=0;i>i) //gray移位后,自身按位异或

放一段代码这,用于参考:

/*Logic to convert binary numbers into Gray coded binary numbers is implemented in the following Verilog Code. */module binary2gray();reg clk;reg rstn;reg [5:0] counter_binary, counter_binary_reg, counter_gray, counter_gray_reg;integer count, file_wr; /* Initial block to generate clock and reset */ initial  begin     clk = 0; rstn = 0;  #100 rstn = 1;     forever begin         #10 clk = !clk;   end end     /* Synchronous Logic for registering the data and incrementing the counter for binary data */always @ (posedge clk or negedge rstn)begin     if (!rstn) begin         counter_binary_reg 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有