格雷码、二进制转换及译码电路
EDA技术与应用
实验报告
实验名称:格雷码、二进制转换及译码电路
姓名:陈丹
学号:2
班级:电信(2)班
时间:
南京理工大学紫金学院电光系
一、实验目的
1)学习用VHDL代码描述组合逻辑电路的方法。
2) 掌握when….else….,generate和case并行语句的使用。
二、实验原理
1)学习VHDL的when….else….,generate和case并行语句。
2)利用when….else….并行语句描述4位二进制码/格雷码转换电路。
3)利用generate并行语句描述n位格雷码/二进制码转换电路。
4)利用case并行语句实现译码电路。
5)利用实验箱验证所设计的电路的正确性,要求将输入输出的数据用数码管显示。
三、实验内容
1、二进制转换为格雷码
4位二进制格雷码转换的真值表如图所示:
建立工程,输入代码
先建立工程,工程命名为“btog”,顶层文件名为“btog”。
选择“file→new”,在弹出的窗口中选择“VHDL File”建立“VHDL”文件。
在新建的VHDL文件中输入二进制格雷码转换的VHDL代码,将文件保存。
二进制转换为格雷码的代码:
编译仿真
对当前文件进行编译,编译通过以后建立仿真波形,保存为“”.为波形文件添加节点,将“end time”设置为100μs ,将输入输出编组,并为输入信号赋值,其中“start value”为“0000”,“count every”设置为5μs.其波形如下:
仿真结果
2、generate语句实现格雷码转换为二进制
对于n位二进制转换为格雷码的码转换电路,转换表达式如下:
Bn=Gn
Bi=Gi⊕B(i+1)
建立工程,输入代码
先建立工程,工程命名为“gtob”,顶层文件名为“g_to_b2”。
选择“file→new”,在弹出的窗口中选择“VHDL File”建立“VHDL”文件。
在新建的VHDL文件中输入格雷码二进制转换的VHDL代码,将文件保存。
转换代码:
编译仿真
对当前文件进行编译,编译通过以后建立仿真波形,保存为“”.为波形文件添加节点,将“end time”设置为100μs ,将输入输出编组,并为输入信号赋值,其中“start value”为“0000”,“count every”设置为5μs.其波形如下:
3、case语句实现译码电路
代码描述:
仿真波形:
4、管脚配置
利用实验箱的模式6来验证设计电路的正确性。
用键5~键8表示输入管脚g0~g3,发光二极管D1~D4表示输出管脚b0~b4。
用7、8两个七段显示译码管表示格雷码和二进制码。
选择“assignment→assignment editor”弹出管脚配置图,在“location”一栏中填入相应器件的管脚。
5、下载
将文件下载到实验箱,对实验箱进行操作,将键5~键8按钮设置为不同的电平,观察七段显示译码管的情况。
五、小结与体会
通过这次试验我对软件的运用又有了更一步的认识,熟练地操作。
而且将学过的知识用新的编程来做,通过此次实验学会了二进制和格雷码之间的转换,以及用generate和generic 方法书写程序。
对于n位二进制码转换为格雷码的码转换电路,转换表达式如下:
在软件编程时遇见了错误,然后经自己的检查将程序修改好。
这样下次才不会犯错而且要注意。
二进制转换为格雷码
二进制转换为格雷码
1二进制与格雷码的转换
二进制是用于计算的一种逻辑编码,由0和1组成,它是其他编码的基础。
格雷码是在二进制编码系统上进行改良的一种编码方式,它被广泛应用于数学和电子设备之间的数据传输等场合。
格雷码是传统二进制编码的优化,可以降低结构上的错误率。
传统的二进制编码要求每一个位(Bit)编码变化才能表示新的字符,而格雷码只要求相邻的位有一个变化就可以了。
因此,经过优化的格雷码在实现下一个编码时可以更快、更有效地实现。
2格雷码的生成
一位格雷码由二进制的“镜像”模式来生成,即第一位不变,其余位置上,该位和它左侧的位的异或结果即为该位的格雷码的值。
要生成多位格雷码,也只需要按照这种方式把位`依次处理大即可,即从最低位开始,第i位和他左边i-1位异或则为第i位格雷码。
3二进制与格雷码之间的转换
当转换二进制到格雷码时,可以逐位处理,即先生成第1位格雷码,然后在此基础上生成第2位格雷码(以第一位格雷码为左侧位),依此类推即可。
转换格雷码到二进制,可以采用简单的计算方法,原则上从低位开始转换,第一位格雷码和其相应的二进制位相同,其余几位二进制位等于该位格雷码加上它左边位的二进制值再取反。
以上就是二进制与格雷码之间转换的原理与方法,二进制和格雷码都是用来存储和传递数据的常用编码方法,理解其之间的原理和使用方法有助于提高计算机的工作效率。
二进制与格雷码转换
在精确定位控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。
目前,检测位置的办法有两种:其一是使用位置传感器,测量到的位移量由变送器经A/D转换成数字量送至系统进行进一步处理。
此方法精度高,但在多路、长距离位置监控系统中,由于其成本昂贵,安装困难,因此并不实用;其二是采用光电轴角编码器进行精确位置控制。
光电轴角编码器根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。
而绝对式编码器是直接输出数字量的传感器,它是利用自然二进制或循环二进制(格雷码)方式进行光电转换的,编码的设计一般是采用自然二进制码、循环二进制码、二进制补码等。
特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码;抗干扰能力强,没用累积误差;电源切断后位置信息不会丢失,但分辨率是由二进制的位数决定的,根据不同的精度要求,可以选择不同的分辨率即位数。
目前有10位、11位、12位、13位、14位或更高位等多种。
其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次码变换,变成自然二进制码,在由上位机读取以实现相应的控制。
而在码制变换中有不同的处理方式,本文着重介绍二进制格雷码与自然二进制码的互换。
一、格雷码(又叫循环二进制码或反射二进制码)介绍在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。
格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。
格雷码转换为二进制码
格雷码转换为二进制码什么是格雷码?在计算机科学中,格雷码(Gray code)是一种二进制编码方式,也称为反射二进制码。
它的特点是相邻的两个数值只有一位不同,这样可以减少传输错误和电路噪声对数据的影响。
格雷码最早由法国数学家欧仁·格雷于19世纪中叶提出,并应用于机械转盘等领域。
后来,随着计算机科学的发展,格雷码被广泛应用于数字通信、编码器、存储器等领域。
格雷码与二进制码的转换格雷码转换为二进制码要将格雷码转换为二进制码,可以使用以下步骤:1.将最高位(最左边)保持不变,作为二进制数的最高位。
2.从左到右依次处理每一位:–如果当前位与前一位相同,则该位为0。
–如果当前位与前一位不同,则该位为1。
以下是一个示例,将4位格雷码转换为4位二进制码:格雷码二进制码0000 00000001 00010011 00100010 00110110 01000111 01010101 01100100 0111……二进制码转换为格雷码要将二进制码转换为格雷码,可以使用以下步骤:1.将最高位(最左边)保持不变,作为格雷码的最高位。
2.从左到右依次处理每一位:–如果当前位与前一位相同,则该位为0。
–如果当前位与前一位不同,则该位为1。
以下是一个示例,将4位二进制码转换为4位格雷码:格雷码二进制码0000 00000001 0001格雷码转换的应用数字通信在数字通信中,数据传输可能受到噪声的干扰。
使用普通的二进制编码方式,由于相邻数值之间可能有多个位发生变化,噪声可能导致多个错误比特。
而使用格雷码,则可以减少这种错误的发生,因为相邻数值之间只有一位发生变化。
编码器编码器是一种用于将旋转或线性运动转换为数字信号的装置。
使用格雷码编码器可以提供高精度和高可靠性的位置测量。
由于格雷码中相邻数值只有一位不同,因此在读取编码器输出时,可以更容易地检测到位置变化。
存储器在存储器中,使用格雷码编址可以减少数据传输的错误。
数字设计---格雷码与二进制码
数字设计---格雷码与⼆进制码格雷码与⼆进制码格雷码格雷码是⼀种循环⼆进制码或者叫作反射⼆进制码。
格雷码的特点是从⼀个数变为相邻的⼀个数时,只有⼀个数据位发⽣跳变(或者说相邻的两个格雷码之间只有⼀位不同)。
从图上可以看出,相邻的⼆进制数会出现多位的变化(⽐如从15变到0就会有4位的变化),但对于格雷码来说,相邻的格雷码只有⼀位存在不同。
对于⼆进制数计数器来说,如果在跨时钟域的时候将计数器传到不同的时钟域,如果仅采⽤“打两拍的⽅法”,因为有多位数的变化,就可能会导致电路出现亚稳态或者出现⽑刺。
由于格雷码的这种特点,采⽤格雷码就可以避免⼆进制编码计数组合电路中出现的亚稳态。
格雷码常⽤于通信,FIFO 或者 RAM 地址寻址计数器中。
格雷码与BCD码的转换BCD码转格雷码对于n位的⼆进制数,可以通过下⾯的式⼦转换为格雷码gray n−1=bin n−1gray i=bin i⊕bin i+1i<n−1即格雷码的最⾼位与⼆进制数的最⾼位相同,后⾯格雷码的各位等于相应的⼆进制码的对应位与上⼀位的异或。
从上图可以看出⼆进制码转换为格雷码的具体流程拿5位⼆进制数10110举例gray[4]=bin[4]=1gray[3]=bin[3]⊕bin[4]=1gray[2]=bin[2]⊕bin[3]=1gray[1]=bin[1]⊕bin[2]=0gray[0]=bin[0]⊕bin[1]=1对于verilog来说,我们可以将⼆进制数与他右移⼀位的数按位相异或来求得gray码。
output [WIDTH-1:0] gray_out);//================================================================// ------------------------- MAIN CODE --------------------------//================================================================assign gray_out = (bin_in >> 1) ^ bin_in; //右移⼀位再按位相异或// gray_out[0] = (bin_in[1]) ^ bin_in[0]; //当然可以分着来,就是没上⾯那么简洁// gray_out[1] = (bin_in[2]) ^ bin_in[1];// gray_out[2] = (bin_in[3]) ^ bin_in[2];// gray_out[3] = (bin_in[3]) ^ 0 ;endmodule格雷码转BCD码对于n位的格雷码,可以采⽤下⾯的式⼦转换为⼆进制码bin n−1=gray n−1bin i=gray i⊕bin i+1即⼆进制码的最⾼位与格雷码的最⾼位相同,剩余位可以通过将对应位的格雷码与上⼀位的⼆进制码相异或求得还是拿上图的5位格雷码10110举例bin[4]=gray[4]=1bin[3]=gray[3]⊕bin[4]=gray[3]⊕gray[4]=1bin[2]=gray[2]⊕bin[3]=gray[2]⊕gray[3]⊕gray[4]=0bin[1]=gray[1]⊕bin[2]=gray[1]⊕gray[2]⊕gray[3]⊕gray[4]=1bin[0]=gray[0]⊕bin[1]=gray[0]⊕gray[1]⊕gray[2]⊕gray[3]⊕gray[4]=1从上⾯的分析可以看出格雷码转换为⼆进制,对应位的⼆进制可以通过求对应位格雷码及以上所有位的异或求得。
格雷码、二进制转换电路
EDA技术与应用实验报告实验名称:格雷码、二进制转换电路一、实验目的1、学习使用VHDL代码组合逻辑电路的方法。
2、掌握when...else...和generate并行语句的使用。
二、实验内容1、学习VHDL代码修改。
2、利用case语句描述4位格雷码/二进制码转换电路,要求将输入输出的数据用数码管显示。
3、利用generate并行语句描述n位格雷码/二进制码转换电路(n=4)。
4、利用实验箱验证所设计电路的正确性,要求将输入输出的数据用七段数码管显示。
三、实验原理1、4位格雷码转换为二进制表达式为:四、 实验代码library ieee ;use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity gtob isport(g:in std_logic_vector(3 downto 0);b:buffer std_logic_vector(3 downto 0));end gtob;architecture rhg of gtob isbeginb<="0000"when g="0000"else"0001"when g="0001"else"0011"when g="0010"else"0010"when g="0011"else"0111"when g="0100"else"0110"when g="0101"else"0100"when g="0110"else"0101"when g="0111"else"1111"when g="1000"else"1110"when g="1001"else"1100"when g="1010"else"1101"when g="1011"else"1000"when g="1100"else"1001"when g="1101"else"0011"when g="1110"else"1010";end rhg;33232121010B G B B G B B G B B G ==⊕=⊕=⊕五、电路仿真结果六、管脚配制。
格雷码二进制码转换电路
格雷码二进制码转换电路格雷码(Gray code),又称格雷码二进制码转换电路,是一种特殊的二进制编码方式。
它的特点是相邻的两个数值仅有一位二进制数发生变化,适用于数字和模拟电路中的编码和传输。
格雷码的起源可以追溯到19世纪,由法国数学家弗兰索瓦·格雷(François Gray)发明。
他的目的是设计一种编码方式,可以减少在数字传输过程中由于噪声、抖动等原因引起的误差。
在传统的二进制编码方式中,相邻的两个数值之间可能会发生多个二进制位的变化,这样在数字传输中就容易引起误差。
而格雷码通过仅改变一位二进制数来表示相邻的数值,可以有效地降低传输误差的风险。
格雷码的转换电路由多个逻辑门组成,常见的实现方式有反馈式和非反馈式两种。
反馈式格雷码转换电路使用触发器和逻辑门组成,适用于需要连续转换的应用场景。
非反馈式格雷码转换电路则使用逻辑门组成,适用于只需要单次转换的应用场景。
格雷码转换电路的核心是通过逻辑门的组合实现码字之间的变换。
逻辑门的输入信号由当前码字和目标码字决定,通过逻辑运算得到输出信号。
常见的逻辑门有与门、或门、非门等,它们可以实现不同的逻辑运算。
格雷码转换电路的功能包括格雷码到二进制码的转换和二进制码到格雷码的转换。
格雷码到二进制码的转换可以通过逻辑门的组合实现,将格雷码逐位进行异或运算,并与之前的结果进行与运算。
而二进制码到格雷码的转换则可以通过逻辑门的组合实现,将二进制码逐位进行异或运算,得到格雷码。
在数字电路中,格雷码转换电路广泛应用于各种编码器和解码器中。
编码器可以将多个输入信号转换为相应的格雷码输出,解码器则可以将格雷码输入转换为相应的输出信号。
格雷码转换电路还可以用于数字计数器、旋转编码器等应用中。
总结起来,格雷码二进制码转换电路是一种特殊的二进制编码方式,通过逻辑门的组合实现码字之间的变换。
它的应用范围广泛,可以用于数字电路中的编码和传输。
格雷码的特点是相邻的两个数值仅有一位二进制数发生变化,可以减少传输误差的风险。
二进制代码与格雷码相互转换
二进制代码与格雷码相互转换格雷码(Gray Code,简称G码)是典型的循环码,它是由二进制码(Binary,简称B码)导出的。
特点是序号相邻的两组代码只有一位码不同(包括头尾两组代码),且具有循环性。
上述特点使全部码组按序循环相邻,若以循环码表示一个循环过程中按顺序发生的状态,则任何状态变化只对应有一个变量发生变化,这个特点有助于提高电路的可靠性。
电路实现:3个异或门和两个2输入数据选择器MUX,设置方式控制端M:当M = 0 时,G码→B码;当M = 1时,B码→G码。
十进制数的二进制编码在人机交互过程中,为了既满足系统中使用二进制数的要求,又适应人们使用十进制数的习惯,通常用4位二进制代码对十进制数字符号进行编码,简称为二-十进制代码,或称BCD(Binary Coded Decimal)码。
它既有二进制的形式,又有十进制的特点。
常用的BCD码有8421码、2421码和余3码3种,它们与十进制数字符号对应的编码如表1.4所示。
表1.4 常用的3种BCD码进制字符8421码2421码余3码0 0000 0000 00111 0001 0001 01002 0010 0010 01013 0011 0011 01104 0100 0100 01115 0101 1011 10006 0110 1100 10017 0111 1101 10108 1000 1110 10119 1001 1111 1100一、8421码8421码是最常用的一种有权码,其4位二进制码从高位至低位的权依次为23、22、21、20,即为8、4、2、1,故称为8421码。
按8421码编码的0~9与用4位二进制数表示的0~9完全一样,所以,8421码是一种人机联系时广泛使用的中间形式。
注意:※ 8421码中不允许出现1010~1111四种组合,因为没有十进制数字符号与其对应。
※ 十进制数字符号的8421码与相应ASCII码的低四位相同,这一特点有利于简化输入输出过程中BCD码与字符代码的转换。
格雷码转二进制码
格雷码转二进制码
格雷码转二进制码,是一种将数据从格雷码转换为二进制码的方法。
在数字电路中,格雷码和二进制码都是常用的编码方式。
格雷码是一种反映数字大小关系的编码方式,它的特点是相邻的两个数的码值只有一位不同。
而二进制码是一种将数字转换成只包含0和1的二进制数的编码方式。
格雷码转二进制码的方法比较简单,可以通过逐位异或的方式实现。
具体步骤如下:
1. 将格雷码的最高位复制到二进制码的最高位。
2. 从左到右依次对格雷码的每一位和二进制码的对应位进行异或操作,将结果填入二进制码的相应位。
3. 最终得到的二进制码即为格雷码转换后的结果。
需要注意的是,格雷码转二进制码只适用于无符号整数的编码转换。
如果需要进行带符号整数的编码转换,则需要采用其他的编码方式。
总之,格雷码转二进制码是数字电路中常用的编码转换方式之一,它可以通过逐位异或的方式将格雷码转换为二进制码。
格雷码和二进制的相互转换-vhdl程序
1.B2G_converter1)Screenshot of iSim simulation results:note: from the beginning point at 1,000ns, input(i5binary) changes every other 50nsa)i5binary input from 0 to 6b)i5binary input from 7 to 13c)i5binary input from 14 to 20d)i5binary input from 21 to 27e)i5binary input from 28 to 312)VHDL for Binary-to-Gray-Code converter:------------------------------------------------------------------------------------ Company:-- Engineer:---- Create Date: 13:02:37 09/15/2015-- Design Name:-- Module Name: b2g_converter - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:---- Dependencies:---- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating-- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity b2g_converter isPort ( i5Binary : in STD_LOGIC_VECTOR (4 downto 0);o5GrayCode : out STD_LOGIC_VECTOR (4 downto 0));end b2g_converter;architecture Behavioral of b2g_converter issignal gbuffer: std_logic_vector (4 downto 0);begino5GrayCode<=gbuffer;gbuffer(4)<=i5Binary(4);label1:for i in 3 downto 0 generategbuffer(i)<= i5Binary(i+1) xor i5Binary(i);end generate;end Behavioral;2.G2B_converter1)Gray-code-to-Binary conversionFrom the combinational logic described for gray-code-to-binary conversion, we obtain:Thus, for a n-bit graycode number g, g=g(n-1)g(n-2)…g(2)g(1)g(0), the corresponding n-bit binary number b, b=b(n-1)b(n-2)…b(2)b(1)b(0) is computed using the following description:b(n-1)=g(n-1) for the MSB, andb(i)= g(i) b(i+1) for bits in position 0 to n-22)Screenshot of iSim simulation results:note: from the beginning point at 1,000ns, input(i5graycode) changes every other 50nsa)i5graycode input from 0 to 6b)i5graycode input from 7 to 13c)i5graycode input from 14 to 20d)i5graycode input from 21 to 27e)i5graycode input from 28 to 313)VHDL for Gray-Code-to-Binary converter:------------------------------------------------------------------------------------ Company:-- Engineer:---- Create Date: 15:20:03 09/15/2015-- Design Name:-- Module Name: g2b_converter - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:---- Dependencies:---- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------ library IEEE;use IEEE.STD_LOGIC_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--use IEEE.NUMERIC_STD.ALL;-- Uncomment the following library declaration if instantiating-- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity g2b_converter isPort ( i5GrayCode : in STD_LOGIC_VECTOR (4 downto 0);o5Binary : out STD_LOGIC_VECTOR (4 downto 0)); end g2b_converter;architecture Behavioral of g2b_converter issignal bbuffer: std_logic_vector (4 downto 0);begino5Binary <= bbuffer;bbuffer(4)<= i5GrayCode(4);label1:for i in 3 downto 0 generatebbuffer(i)<= bbuffer(i+1) xor i5GrayCode(i); end generate;end Behavioral;。
课程设计说明书--二进制与格雷码转换设计
课程设计说明书题目:二进制与格雷码转换设计学生姓名:学号:学院:班级:指导教师:二○一二年七月七日摘要论文题目为设计一个将串行输入的3位自然二进制码转换为3位格雷码串行输出的逻辑电路。
应要求,我们选取了由3位D触发器构成的移位寄存器,由555定时器产生脉冲信号控制将二进制码输入,触发在上升沿,实现了3位二进制码的串行输入并行输出,将其输出端接由两个异或门、一条导线构成的二进制转格雷码的转换部分实现码制转换,将其输出端接到1片74LS194的输入端D1,D2,D3,输出端接D3右移串行输出,实现格雷码的串行输出。
关键词:格雷码;移位寄存器;555定时器;异或门;74LS194目录一、设计任务概述 (4)二、设计方案论证及方框图 (4)三、电路组成及工作原理 (8)四、电路元器件选择与计算 (10)五、安装与调试 (11)1、安装2、测试方案3、调试过程4、调试中发现的问题及解决措施六、指标测试 (14)1、单元电路功能测试2、整体电路功能测试结论 (15)心得体会 (16)参考文献 (18)一设计任务概述论文题目为设计一个将串行输入的3位自然二进制码转换为3位格雷码串行输出的逻辑电路。
应要求,我们采用由3位D触发器构成的移位寄存器,实现3位二进制码的串行输入并行输出,将其输出端接由两个异或门、一条导线构成的二进制转格雷码的转换部分实现码制转换,将其输出端接到1片74LS194,实现串行输出。
二设计方案方框图及论证在实现电路时可以有多种方案:方案一:(转码部分)一般的,普通二进制码与格雷码可以按以下方法互相转换:二进制码->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0);格雷码-〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变).即(输出端)选取74LS194作为输出端。
