格雷码计数器

合集下载

格雷码

格雷码

利用卡诺图相邻两格只有一位变化以及卡诺图的变量取值以低阶格雷码的顺序排布的特征,可以递归得到高 阶格雷码。由于此方法相对繁琐,使用较少。生成格雷码的步骤如下:
三位格雷码(三位格雷码由建立在二位基础上) 格雷码次序:000起点→001→011→010→110→111→101→100终点 四位格雷码 格雷码次序:0000起点→0001→0011→0010→0110→0111→0101→0100→1100→1101→ 1111→1110→1010→1011→1001→1000终点
发展历史
法国工程师Jean-Maurice-Émlle Baudot在1880年曾用过的波特码是典型格雷码的一种变形。
Gray Code是由贝尔实验室的Frank Gray在1940年代提出的,用来在使用PCM(Pusle Code Modulation) 方法传送讯号时避免出错。
二进制码→格雷码(编码): 此方法从对应的n位二进制码字中直接得到n位格雷码码字,步骤如下: 公式表示: (G:格雷码,B:二进制码) 例如:二进制码0101,为4位数,所以其所转为之格雷码也必为4位数,因此可取转成之二进位码第五位为0, 即0 b3 b2 b1 b0。 0 xor 0=0,所以g3=0 0 xor 1=1,所以g2=1 1 xor 0=1,所以g1=1 0 xor 1=1,所以g0=1 因此所转换为之格雷码为0111 格雷码→二进制码(解码):
格雷码
弗兰克·格雷提出的术语
01 基本信息
03 发展历史 05 应用
目录
02 码表 04 转换方法 06 程序实现
典型的二进制格雷码(Binary Gray Code)简称格雷码,因1953年公开的弗兰克·格雷(Frank Gray,-) 专利“Pulse Code Communication”而得名,当初是为了通信,现在则常用于模拟-数字转换和位置-数字转 换中。法国电讯工程师波特(Jean-Maurice-Émile Baudot,-)在1880年曾用过的波特码相当于它的一种变形。 1941年George Stibitz设计的一种8元二进制机械计数器正好符合格雷码计数器的计数规律。

格雷码

格雷码

在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码 是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单 步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、 自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式, 因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十 进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。 而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数 字表示中只有一个数字不同。它在任意两个相邻的数之间转换时,只有一个数位发生 变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数与最 小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。

(n+1)位格雷码中的后2n个码字等于n位格雷码的码字, 按逆序书写,加前缀1
00 01 11 10
二进制格雷码与自然二进制码的互换
此方法从对应的n位二进制码字中直接得到n位格雷码码字,步骤如下: 1、对n位二进制的码字,从右到左,以0到n-1编号 2、如果二进制码字的第i位和i+1位相同,则对应的格雷码的第i位为0,否则 为1(当i+1=n时,二进制码字的第n位被认为是0,即第n-1位不变) 公式表示: (G:格雷码,B:二进制码)
{
intm,n,i,j,b,p,bound; intgr[14]; //输入n,m并判断m是否合法
bound=1;
printf("Pleaseinputtwonumber:n,m\n"); scanf("%d,%d",&n,&m); for(i=1;i<=n;i++)

格雷码计数器的低功耗分析与设计

格雷码计数器的低功耗分析与设计
c u t rc mp r d wi h r i a y bi a y c d rc u t r o ne o ae t teo d n r n r o e o n e . h Ke wo d : a o e c u t r L y r s Gr y c d o n e ; ow o rd s i a i n; o rd s i a i n a a y i ; a e sm u a i n p we is p to P we i sp to n l s s W v i l t o
20 0 6年 第 2 5卷 第 4期
文 章 编 号 : 10 5 6 ( 0 6 4 0 6 — 3 0 6 17 2 0 )0 — 0 4 0
格 雷码 计数 器 的低功 耗 分析 与设 计
叶 卫东 ,谢建 华 ( 京航 空 航天 大 学 自动 化 科学 与 电气 工程 学 院 ,北 京 1 0 8 ) 北 00 3 摘 要 :根据 C MOS电路 动 态功耗 模 型对 格 雷码 计 数 器 的分 析 ,并 在 MAX Pu I环 境 用 V rlg语 言对 其 设计 + ls I ei o
wa lo p o e y wa e s mu a i n i o e s m n io me t P we — n l s ss o d t a e p r e t g ft e d p e s d sa s r v d b v i l t n M d li e v r n n . o o ra a y i h we h tt e c n a e o e r s e h h
维普资讯
^ 工 自 动 化
薯控技i l i
M e s r me t n n r l e h i u a u e n dCo to c n q e a T

格雷码同步八进制计数器顺序脉冲发生器

格雷码同步八进制计数器顺序脉冲发生器

格雷码同步八进制计数器顺序脉冲发生器一、概述格雷码是一种具有循环特性的二进制代码,具有顺序性和交替性两个特点。

在电子系统中,格雷码作为一种具有抗干扰能力的计数器顺序脉冲发生器,被广泛应用于数字系统、定时器等领域。

本文将介绍一种基于格雷码同步的八进制计数器顺序脉冲发生器的设计原理、实现方法及其应用场景。

二、设计原理1.硬件结构:该脉冲发生器采用基本的数字电路元件,包括计数器、译码器、驱动器和滤波器等。

计数器用于产生时钟信号,译码器用于解码格雷码,驱动器将解码后的信号驱动输出,滤波器用于滤除信号中的噪声。

2.工作原理:首先,计数器产生一个时钟信号,该信号作为整个系统的基准信号。

在时钟信号的上升沿和下降沿,译码器分别输出当前数值的前一个和后一个格雷码数值,驱动器根据译码器的输出信号驱动输出电路,产生顺序脉冲。

由于采用了滤波器,输出信号中的噪声得到了有效抑制。

三、实现方法1.电路设计:根据硬件结构,设计电路图,根据电路图制作电路板,并连接各个元件。

同时,需要选择合适的芯片和电阻电容等元件,确保电路的稳定性和可靠性。

2.编程控制:编写控制程序,实现计数器的计数值控制。

程序应具有定时器和中断功能,以适应不同的应用场景。

同时,需要与硬件电路进行通信,实现格雷码的解码和输出。

3.调试优化:连接电源和测试设备,进行电路调试和优化。

测试过程中应注意测试信号的稳定性和输出脉冲的正确性。

同时,需要不断优化程序和电路设计,提高系统的性能和稳定性。

四、应用场景该脉冲发生器适用于各种需要定时和顺序脉冲的电子系统,如数字钟、数控机床、交通信号灯等。

在这些系统中,该脉冲发生器可以提供准确的定时信号,确保系统的稳定运行。

同时,由于其具有抗干扰能力强的特点,该脉冲发生器还适用于对精度和稳定性要求较高的应用场景。

五、创新点与优势1.创新点:本设计采用了格雷码同步技术,使得脉冲发生器的输出具有更高的顺序性和稳定性。

此外,电路设计简单可靠,易于实现。

格雷码的来源以及格雷码的应用

格雷码的来源以及格雷码的应用
4 详细设计
4.1 A* 算法及扩充 本系统采用的寻路算法是使用基于 A* 算法的 AstarPathFinding
插件实现遥 A* 算法的基本原理是通过建立一个从空中向地面投射的一个地
图袁接着在地图中标示出障碍物遥 其中寻路步骤为院首先判断当前节点 周围是否可以袁接着再一次判断周围节点距离终点距离最短的袁而最 短距离的判断有多种方式袁比如可以通过简单的进行欧几里得距离判 断遥 选出其中最好的节点袁将节点加入一个数据结构中袁可以使链表尧栈 等等遥 依次执行上面的判断袁就可以得出一个可以的路径了遥
此时可以采用格雷码计数器袁 尽管格雷码计数器的设计比较复 杂袁占用的 FPGA 的内部资源更多袁但是现在半导体的成本越来越低袁 并且采用格雷码计数器可以大大增强系统的稳定性和可靠性遥
根据格雷码计数的特点袁 格雷码计数器的设计大概思路就是院将 相应的普通二进制码转换成对应的格雷码遥 在二进制计数过程中袁通 过异或关系将其转换成格雷码再输出袁而二进制数并不输出袁这样就 得了格雷码计数器[2]遥从而有效地避免了毛刺的产生袁保证了计数的稳 定和可靠遥
Science & Technology Vision
科技视界
格雷码的来源以及格雷码的应用
梅 媛 沈祖斌 渊江汉大学数学与计算机科学学院袁湖北 武汉 430056冤
揖摘 要铱简述了格雷码的来源和发展历史袁介绍了格雷码的轴角编码器的输出原理袁以及格雷码的两大特点袁一是数与数之间都只发生一 位跳变袁二是在利用格雷码计数器时会降低功耗遥 另外介绍了格雷码与二进制之间的两种转换方法院公式法和查表法曰以及格雷码计数器的应 用中出现的毛刺状态和格雷码计数器的应用原理遥
在实际应用中袁二进制计数器是最广泛应用的一种方法袁它可以 在电路设计中被调用来实现系统在一定时间间隔后完成动作袁但是二 进制计数器的进位过程会出现一些中间状态遥 在表一中我们很清楚的 了解二进制在码值变化的时候位数的变化情况遥 在我们的逻辑思维 里袁如 4 位异步串行二进制计数器进位期间读数由 0111 变化到 1000 时袁0->1尧1->0尧1->0尧1->0 这四位的变化是同时进行的袁但是在实际 的物理器件中袁在信号变化的瞬间袁组合逻辑的输出有先后顺序袁这四 位并不是同时变化袁往往会出现一些不正确的尖峰信号袁这些尖峰信 号称为野毛刺冶遥 电路低速运行的时候袁这些毛刺不能被检测到袁对后续 电路不会有影响袁但是电路高速运行的时候袁这些毛刺就不能被忽视袁 这就有可能会得到 0110尧0100 和 0000 三个错误数渊下转第 200 页冤

基于d触发器的3位格雷码计数器

基于d触发器的3位格雷码计数器

基于触发器的3位格雷码计数器概述1. 本文将介绍基于d触发器的3位格雷码计数器的设计和工作原理。

2. 格雷码是一种二进制数的编码方式,相邻的两个数只有一位二进制位不同。

格雷码计数器是一种特殊的计数器,其计数规律符合格雷码的排列方式。

3. 我们将通过使用d触发器和逻辑门来设计一个3位格雷码计数器,并且详细分析其工作原理和电路结构。

d触发器1. d触发器是数字电路中常用的一种触发器,它采用时钟信号来控制数据输入,从而实现数据的存储和传递。

2. d触发器有一个数据输入端d和一个时钟输入端clk,当时钟信号发生上升沿时,d触发器会将d端的输入数据存储并输出。

3位格雷码计数器的设计1. 我们将使用三个d触发器和逻辑门来设计3位格雷码计数器。

假设三个d触发器的输入端分别为a、b和c,输出端分别为Qa、Qb和Qc。

2. 我们首先设计逻辑电路,根据格雷码的规律,确定d触发器的输入信号和逻辑门的连接方式。

3. 根据逻辑电路设计的结果,将三个d触发器和逻辑门连接起来,形成3位格雷码计数器的电路。

工作原理1. 当计数器处于初始状态时,三个d触发器的输出信号分别为000,表示计数器的初始值为0。

2. 当时钟信号发生上升沿时,逻辑门会根据当前状态来确定下一个状态的输入信号。

3. 经过逻辑门的处理,下一个状态的输入信号被送入对应的d触发器,从而使得计数器的值按照格雷码的规律递增。

总结1. 通过本文的介绍,我们了解了基于d触发器的3位格雷码计数器的设计方法和工作原理。

2. 格雷码计数器在数字逻辑电路中有着广泛的应用,其高效、稳定的特点使得它在实际工程中得到了广泛的应用。

3. 我们希望本文对读者对于数字电路设计和格雷码计数器有所启发,并对相关领域的学习和实践有所帮助。

为了进一步深入理解和学习基于d触发器的3位格雷码计数器,我们可以继续探讨一些具体的细节和应用。

逻辑门的应用1. 在3位格雷码计数器中,逻辑门起着至关重要的作用。

它们用于根据当前状态确定下一个状态的输入信号。

用JK触发器和门电路设计一个4位格雷码计数器

用JK触发器和门电路设计一个4位格雷码计数器

福建农林大学金山学院课程设计报告课程名称:数字逻辑课程设计题目:用JK触发器和门电路设计一个4位格雷码计数器姓名:系:专业:年级:学号:指导教师:职称:2011年6 月29 日用JK触发器和门电路设计一个4位格雷码计数器一、实验目的1、用JK触发器和门电路设计一个4位格雷码计数器。

2、加强对格雷码的认识。

3、熟悉对JK触发器的使用。

4、利用仿真软件Multisim11.0对数字电路进行仿真和实现。

二、仿真软件Multisim介绍(注:因为本课程设计用的是2011年的版本,所以对此进行简单的介绍)⑴仿真软件Multisim11.0:NI Multisim软件是一个专门用于电子电路仿真与设计的EDA工具软件。

作为 Windows 下运行的个人桌面电子设计工具,NI Multisim 是一个完整的集成化设计环境。

NI Multisim计算机仿真与虚拟仪器技术可以很好地解决理论教学与实际动手实验相脱节的这一问题。

学员可以很方便地把刚刚学到的理论知识用计算机仿真真实的再现出来,并且可以用虚拟仪器技术创造出真正属于自己的仪表。

NI Multisim软件绝对是电子学教学的首选软件工具。

⑵特点:①直观的图形界面。

②丰富的元器件。

③强大的仿真能力。

④丰富的测试仪器。

⑤完备的分析手段。

⑥独特的射频(RF)模块。

⑦强大的MCU模块。

⑧完善的后处理。

⑨详细的报告。

⑩兼容性好的信息转换。

三、实验步骤(包括设计过程、仿真结果和结果分析)⒈设计过程6 0 1 0 1 07 0 1 0 0 08 1 1 0 0 09 1 1 0 1 0 10 1 1 1 1 0 11 1 1 1 0 0 12 1 0 1 0 0 13 1 0 1 1 0 14 1 0 0 1 0 15 1 0 0 0 1 16 0 0 0 0 0② 按状态转换表的计数顺序可得****3210Q Q Q Q 的卡诺图:从而分别得出*3Q 、*2Q 、*1Q 、*0Q 、C 的卡诺图:③ 由卡诺图得出状态方程和输出方程:*''''''''3313021021032103()()'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =++=+ |*''''''2212031031023102()()'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =++=+*'''11032032023010321(()')(())'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =++=⊕+⊕*'''''''032132132132132103210()'()'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =+++=⊕⊕+⊕⊕'''3210C Q Q Q Q =④ 又JK 触发器的特性方程为:*''Q JQ K Q =+,所以可得驱动方程:''3210J Q Q Q =,'''3210K Q Q Q = ''2310J Q Q Q =,'2310K Q Q Q =1320()'J Q Q Q =⊕,1320()K Q Q Q =⊕ 0321()'J Q Q Q =⊕⊕,0321K Q Q Q =⊕⊕⑤ 由驱动方程可画出逻辑电路图:⒉仿真结果①原理图如下:②部分波形图如下:⑴0000~1101⑵1101~0011③电路状态变化如下:⑴32100000Q Q Q Q=,0C=⑵32100001Q Q Q Q=,0C=⑶32100011Q Q Q Q=,0C=3210⑸32100110Q Q Q Q=,0C=⑹32100111Q Q Q Q=,0C=3210⑻32100100Q Q Q Q=,0C=⑼32101100Q Q Q Q=,0C=3210⑾32101111Q Q Q Q=,0C=⑿32101110Q Q Q Q=,0C=3210⒁32101011Q Q Q Q=,0C=⒂32101001Q Q Q Q=,0C=. '. ⒃32101000Q Q Q Q =,1C =⒊结果分析当3Q 、2Q 、1Q 、0Q 从00001000:完成一个循环时,进位输出C 才为1,其他情况都为0,符合题意要求。

格雷码编码规则_格雷码有什么规律

格雷码编码规则_格雷码有什么规律

格雷码编码规则_格雷码有什么规律格雷码典型的二进制格雷码简称格雷码,因1953年公开的弗兰克·格雷专利“Pulse Code Communication”而得名,当初是为了通信,现在则常用于模拟-数字转换和位置-数字转换中。

法国电讯工程师波特在1880年曾用过的波特码相当于它的一种变形。

1941年George Stibitz设计的一种8元二进制机械计数器正好符合格雷码计数器的计数规律。

格雷码(Gray code)曾用过Grey Code、葛莱码、葛兰码、格莱码、戈莱码、循环码、二进制反射码、最小差错码等名字,它们有的是错误的,有的易与其它名称混淆,建议不再使用它们。

格雷码的编码规则格雷码母线位置检测单元包括地址发射单元、天线箱、地址检测单元、格雷码母线及安装辅件等部分。

利用最简单的单匝线圈的感应原理,当天线箱线圈中通进交变电流时,在天线箱四周会产生交变磁场。

格雷码母线近似处在一个交变的、均匀分布的磁场中,每对格雷码母线芯线会产生感应电动势。

发射单元地址信号通过电磁耦合方式传送到格雷码母线的感应环线上。

地址检测单元对接收到的信号进行相位比较。

交叉线的信号相位与平行线的信号相位相同,地址为“0”;交叉线的信号相位与平行线的信号相位相反,地址为“1”,这样感应的地址信息是格雷码排列,永不重复,由此确定移动站在格雷码母线长度方向上的位置。

格雷码有的规律在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。

格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。

而格雷码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

格雷码计数器的Verilog描述一、格雷码介绍(转载)在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。

格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。

而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。

它在任意两个相邻的数之间转换时,只有一个数位发生变化。

它大大地减少了由一个状态到下一个状态时逻辑的混淆。

另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。

下表为几种自然二进制码与格雷码的对照表:┌────┬──────┬───┬────┬──────┬────┐│十进制数│自然二进制数│格雷码│十进制数│自然二进制数│格雷码│├────┼──────┼───┼────┼──────┼────┤│0 │0000 │0000 │8 │1000 │1100 │├────┼──────┼───┼────┼──────┼────┤│1 │0001 │0001 │9 │1001 │1101 │├────┼──────┼───┼────┼──────┼────┤│2 │0010 │0011 │10 │1010 │1111 │├────┼──────┼───┼────┼──────┼────┤│3 │0011 │0010 │11 │1011 │1110 │├────┼──────┼───┼────┼──────┼────┤│4 │0100 │0110 │12 │1100 │1010 │├────┼──────┼───┼────┼──────┼────┤│5 │0101 │0111 │13 │1101 │1011 │├────┼──────┼───┼────┼──────┼────┤│6 │0110 │0101 │14 │1110 │1001 │├────┼──────┼───┼────┼──────┼────┤│7 │0111 │0100 │15 │1111 │1000 │└────┴──────┴───┴────┴──────┴────┘一般的,普通二进制码与格雷码可以按以下方法互相转换:二进制码-->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);格雷码--〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变).数学(计算机)描述:原码:p[0~n];格雷码:c[0~n](n∈N);编码:c=G(p);解码:p=F(c);书写时从左向右标号依次减小.编码:c=p XOR p[i+1](i∈N,0≤i≤n-1),c[n]=p[n];解码:p[n]=c[n],p=c XOR p[i+1](i∈N,0≤i≤n-1).Gray Code是由贝尔实验室的Frank Gray在20世纪40年代提出的(是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的),用来在使用PCM(Pusle Code Modulation)方法传送讯号时避免出错,并于1953年3月17日取得美国专利。

由定义可知,Gray Code的编码方式不是唯一的,这里讨论的是最常用的一种。

二、格雷码计数器算法(原创)格雷码计数器的关键在于根据当前码计算出下一个码,也就是计算出当前哪个位需要取反。

此处给出Matlab的一种算法:function NxG = fNextGray( CurG, N )B(1) = CurG(1);for k = 2 : NB(k) = xor( CurG(k), B(k-1));endC = CurG;for k = N : -1 : 1if B(k) == 0 | k == 1C(k) = not( C(k));breakendendNxG = C;三、8bits格雷码计数器的Verilog描述(原创)module GrayCnt( Clk, nRst, CntOut );input Clk, nRst;output [7:0] CntOut;reg [7:0] CntOut;reg [7:0] NextCnt;always @(posedge Clk)beginif (~nRst)CntOut <= 8'b0000_0000;elseCntOut <= NextCnt;endreg [7:0] tmpCnt;integer k;always @( CntOut )begintmpCnt[7] = CntOut[7];for( k=6; k>=0; k=k-1 )tmpCnt[k] = CntOut[k] ^ tmpCnt[k+1];if( tmpCnt[0]==1'b0 )beginNextCnt[0] = ~CntOut[0];NextCnt[7:1] = CntOut[7:1];endelse if( tmpCnt[1]==1'b0 )beginNextCnt[0] = CntOut[0];NextCnt[1] = ~CntOut[1];NextCnt[7:2] = CntOut[7:2];endelse if( tmpCnt[2]==1'b0 )beginNextCnt[1:0] = CntOut[1:0];NextCnt[2] = ~CntOut[2];NextCnt[7:3] = CntOut[7:3];endelse if( tmpCnt[3]==1'b0 )beginNextCnt[2:0] = CntOut[2:0];NextCnt[3] = ~CntOut[3];NextCnt[7:4] = CntOut[7:4];endelse if( tmpCnt[4]==1'b0 )beginNextCnt[3:0] = CntOut[3:0];NextCnt[4] = ~CntOut[4];NextCnt[7:5] = CntOut[7:5];endelse if( tmpCnt[5]==1'b0 )beginNextCnt[4:0] = CntOut[4:0];NextCnt[5] = ~CntOut[5];NextCnt[7:6] = CntOut[7:6];endelse if( tmpCnt[6]==1'b0 )beginNextCnt[5:0] = CntOut[5:0];NextCnt[6] = ~CntOut[6];NextCnt[7] = CntOut[7];endelsebeginNextCnt[6:0] = CntOut[6:0];NextCnt[7] = ~CntOut[7];endendEndmoduleGray code counters (having one bit change per counter transition) are often used in FIFO design and digital communication.Here I will show two styles gray code counter.Style #1First style gray code counter uses a single set of flip-flops as the Gray code register with accompanying Gray-tobinary conversion, binary increment, and binary-to-Gray conversion.1module gray_counter(2input iclk,3input irst_n,4input ivalid,5output reg [3:0] gray);67wire [3:0] bin_counter;8wire [3:0] gray_counter;910reg [3:0] G2B_counter;1112// convert gray to bin;13always@(ocounter)14begin15 G2B_counter[3] = gray[3];16 G2B_counter[2] = gray[2] ^ G2B_counter[3];17 G2B_counter[1] = gray[1] ^ G2B_counter[2];18 G2B_counter[0] = gray[0] ^ G2B_counter[1];19end2021//binary counter increased by one22assign bin_counter = bin_counter +ivalid;2324//convert bin to gray25assign gray_counter = (bin_counter >>1) ^ bin_counter;2627always@(posedge iclk or negedge irst_n)28begin29if(!irst_n)30begin31 gray <= 4'b0;32end33else34begin35 gray <= gray_counter;36end37end3839endmodule40Style #2A second Gray code counter style, the one described below, uses two sets of registers, one a binary counter and a second to capture a binary-to-Gray converted value. The intent of this Gray code counter style #2 is to utilize the binary carry structure, simplify the Gray-to-binary conversion; reduce combinational logic, and increase the upper frequency limit of the Gray code counter.1module graycounter(2input iclk,3input irst_n,4input ivalid,5output [ADDSIZE-1 : 0] bin, 6output reg [ADDSIZE : 0] gray); 78parameter ADDSIZE = 4;910wire[ADDSIZE : 0] binnext;11wire[ADDSIZE : 0] graynext;12reg[ADDSIZE : 0] bin_o;1314assign binnext = bin_o + ivalid;1516assign graynext = (binnext >>1) ^ binnext; 1718assign bin = bin_o[ADDSIZE-1 : 0];1920always@(posedge iclk or negedge irst_n ) 21if(!irst_n)22 {bin_o, gray} <= 0;23else24 {bin_o, gray} <= {binnext, graynext}; 252627endmodule。

相关文档
最新文档