【精选】格雷码和二进制的转换及典型例题(4bits格雷码计数器) |
您所在的位置:网站首页 › 36进制计数器电路图 › 【精选】格雷码和二进制的转换及典型例题(4bits格雷码计数器) |
目录 一、格雷码简介: 二、格雷码与二进制的转换方法 1、(常用)异或转换 2、递归生成码表 3、其他 三、例题:格雷码计数器(Verilog) 一、格雷码简介:典型的二进制格雷码(Binary Gray Code)简称格雷码,因1953年公开的弗兰克·格雷(Frank Gray,18870913-19690523)专利“Pulse Code Communication”而得名,当初是为了通信,现在则常用于模拟-数字转换和位置-数字转换中。 而在数字电路中,格雷码每次的变换只会有一个二进制位的跳变,极大地减少了亚稳态的产生,保证电路的稳定性,受到了广泛的应用。 ![]() 而在实际的应用中,常常需要进行二进制和格雷码的相互转换。比如在后文的例题中,是以格雷码的方式进行计数(对电路来说性能更好)但计算机进行计数都是简单的二进制,所以需要熟悉和了解两者的转换规则。 格雷码的特征: (1)格雷码属于可靠性编码,是一种错误最小化的编码方式。 (2)典型格雷码是一种采用绝对编码方式的准权码,其权的绝对值为2^i-1(设最低位i=1)。 (3)格雷码的十进制数奇偶性与其码字中1的个数的奇偶性相同。 二、格雷码与二进制的转换方法 1、(常用)异或转换(1)二进制到格雷码(编码) : 格雷码的第i位的值等于二进制第i位和i+1位的异或,当i=n-1时,i+1位取0。 公式为: g(i) = b(i)^b(i+1), i=0,1,2,...,n-1 . 原理如图(以4bits格雷码为例): (2)格雷码到二进制(解码) 从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变)。依次异或,直到最低位。依次异或转换后的值(二进制数)就是格雷码转换后二进制码的值。 公式为:b(i) = g(i)^b(i+1), i = 0,1,2...n-2; b(n-1) = g(n-1). 原理如图(以4bits格雷码为例): 2、递归生成码表 这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造: 1.1位格雷码有两个码字 2.(n+1)位格雷码中的前2^n个码字等于n位格雷码的码字,按顺序书写,加前缀0 3.(n+1)位格雷码中的后2^n个码字等于n位格雷码的码字,按逆序书写,加前缀1 4.n+1位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)加前缀1 这个规则一眼看上去很复杂,我们来举几个例子了解一下: 例如:针对2位格雷码,我们知道变化规律是00,01,11,10。我们再以上述的规则来分析,此时n=1,前2个码字按顺序就是0,1,加前缀0就是00,01;后2个码字按逆序就是1,0,在前缀加1就是11,10。在比如三位的格雷码,000,001,011,010,110,111,101,100,前4个码字是00,01,11,10,加前缀0就是前四个格雷码,而后四位按逆序10,11,01,00,加前缀1就是三位格雷码的后四位。以此类推,4位格雷码就是 (前) 8位码字顺序加前缀0+(后) 8位码字逆序加前缀1,从而形成一级一级的递归。 另外还有卡诺图法等方法,不常用或是比较繁琐不做介绍。 三、例题:格雷码计数器(Verilog)题目描述: 实现4bit位宽的格雷码计数器,两个周期计数一次。 电路的接口如下图所示。 思路: 我们以二进制来计数,再转换为格雷码就可以。 详解如下: module gray_counter( input clk, input rst_n, output reg [3:0] gray_out ); reg [3:0] b; reg c; //计时钟 always @(posedge clk or negedge rst_n) begin if(!rst_n) begin b |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |