课程设计说明书--二进制与格雷码转换设计

合集下载

二进制数和格雷码的转换

二进制数和格雷码的转换

二进制数和格雷码的转换二进制数和格雷码是数字电路中常用的编码方式,它们在数据传输、存储等方面都有广泛的应用。

下面我们来介绍一下二进制数和格雷码的转换方法。

一、二进制数转换为格雷码1.将二进制数的最高位复制到格雷码的最高位上。

2.从左到右扫描二进制数的每一位,如果该位与前一位相同,则在格雷码中该位上写入0,否则写入1。

例如,将二进制数101101转换为格雷码:第一步:将最高位1复制到格雷码的最高位上,得到10xxxx。

第二步:从左到右扫描剩余部分,第2位与第1位不同,故在格雷码中该位上写入1;第3、4、5位与前一位相同,故在格雷码中这三个位置上均写入0;第6位与前一位不同,故在格雷码中该位置上写入1。

最终得到的格雷码为111001。

二、格雷码转换为二进制数1.将格雷码的最高位复制到二进制数的最高位上。

2.从左到右扫描剩余部分,在每个位置上依次执行以下操作:若该位置上的数字为0,则在对应位置上写入前一个数字的值;若该位置上的数字为1,则在对应位置上写入前一个数字的值的补数。

例如,将格雷码111001转换为二进制数:第一步:将最高位1复制到二进制数的最高位上,得到1xxxxx。

第二步:从左到右扫描剩余部分,第2位是1,则在二进制数中该位置上写入前一个数字0的补数1;第3、4、5位均为1,则在二进制数中这三个位置上写入前一个数字0的补数1;第6位为0,则在二进制数中该位置上写入前一个数字1的值0。

最终得到的二进制数为101101。

总结:以上就是二进制数和格雷码之间转换的方法,需要注意的是,在实际应用中要根据具体情况选择合适的编码方式,并且要注意编码转换过程中可能出现的错误。

4位格雷码二进制变换

4位格雷码二进制变换

集成电路课程设计报告设计课题:格雷码变换器专业班级: 11电子学生姓名:学号:指导教师:陈建萍设计时间:2014.5-2014.6一、 实验目的1、用组合电路设计4位格雷码/二进制码变换电路。

2、学习利用原理图和VHDL 语言输入法设计简单逻辑电路的方法。

二、 实验内容1、采用原理图输入方法设计4位格雷码/二进制码变换电路。

2、采用VHDL 语言输入方法设计格雷码/二进制码变换电路。

三、 设计方案与论证1.实验方案用QUARTUS 软件。

采用画出电路图和输入程序源代码来实现VHDL 语言输入方法设计格雷码/二进制码变换电路。

格雷码转换为自然二进制码的转换规则,实际上就是不断的将格雷码与二进制数做异或操作,也就是说,不断的和本身的不同位数做异或操作。

绝对值编码器的输入信号为格雷码,格雷码不能被计算机直接处理,需把格雷码转换成二进制码。

格雷码的高位和二进制码的高位相同,其高位和次高位的异或运算得到二进制码的次高位,依次类推,即可得到格雷码相对应的二进制码。

2. 理论计算真值表测图1 四位二进制格雷码真值表Gi i B Bi Gi Bi ⊕+==)1(01012123233G B B G B B G B B G B ⊕=⊕=⊕==Bi i B Gi Bi Gi ⊕+==)1(01012123233B B G B B G B B G B G ⊕=⊕=⊕==3. 电路图及设计文件1.GENERIC语句GENERIC被称为参数传递映射语句,它描述响应的元件类属参数间的衔接和传送方式。

参数传递语句用于设计从外部端口改变原件内部参数或结构规模的元件,也可称其为类书元件。

该语句在改变电路结构或元件硬件升级方面显得尤为便捷。

其语句格式为:Generic map(param.list) port map(port list);例:generic(n:integer:=7);该语句定义了参数N为整数,且赋值为7。

2.GENERATE语句电路某部分由同类元件构成,这类同类元件叫做规则结构,如:ROM,RAM,移位寄存器等规则结构可以用生成语句来描述。

格雷码、二进制转换电路

格雷码、二进制转换电路

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,简称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码与字符代码的转换。

二进制与格雷码转换

二进制与格雷码转换

在精确定位控制系统中,为了提高控制精度,准确丈量控制对象的位置是十分重要的。

目前,检测位置的法子有两种:其一是使用位置传感器,丈量到的位移量由变送器经A/D 转换成数字量送至系统进行进一步处理。

此方法精度高,但在多路、长距离位置监控系统中,由于其成本昂贵,装置困难,因此其实不实用;其二是采取光电轴角编码器进行精确位置控制。

光电轴角编码器根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。

而绝对式编码器是直接输出数字量的传感器,它是利用自然二进制或循环二进制(格雷码)方式进行光电转换的,编码的设计一般是采取自然二进制码、循环二进制码、二进制补码等。

特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码;抗干扰能力强,没用累积误差;电源切断后位置信息不会丢失,但分辨率是由二进制的位数决定的,根据分歧的精度要求,可以选择分歧的分辨率即位数。

目前有10位、11位、12位、13位、14位或更高位等多种。

其中采取循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不克不及直接进行比较大小和算术运算,也不克不及直接转换成其他信号,要经过一次码变换,酿成自然二进制码,在由上位机读取以实现相应的控制。

而在码制变换中有分歧的处理方式,本文着重介绍二进制格雷码与自然二进制码的互换。

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

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

课程设计说明书--二进制与格雷码转换设计

课程设计说明书--二进制与格雷码转换设计

课程设计说明书题目:二进制与格雷码转换设计学生姓名:学号:学院:班级:指导教师:二○一二年七月七日摘要论文题目为设计一个将串行输入的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作为输出端。

16bit二进制→格雷码转换

16bit二进制→格雷码转换
F235(GRY) 16bit二进制→格雷码转换 P235(PGRY)
适用机型 FP∑/FP2/FP2SH/FP10SH
概述
将16位二进制数据转换为格雷码 对于FPΣ, P型高级指令不适用
程序示例
触发器
梯形图程序
地址
0 1
布尔形式 指令
ST R 0
F235 (GRY)
DT
10
DT
20
S 待转换的16bit数据或16bit数据区(源) D 存放转换结果的16bit数据(目标)
A
N/A N/A N/A A
N/A
A: 可以使用 N/A: 不可使用
3-486
示例说明
当指定的bit位置n=10时, 将进行以下处理
15
0
0101000111011001

15
10
0
D
1
D+1
0
D+2
0
D+3
1
D+4
1
D+5
0
D+6
1
D+7
1
D+8
1
D+9
0
D+10
0
D+11
0
D+12
1
D+13
0
· 错误标志(R9008)
当以下情况时瞬间变为ON -使用索引寄存器指定数据区超出范围 -指定bit位置的参数[n]超出有效范围0≤n≤15 -由S指定的转换源数据存放区域超出范围
3-489
A A A AA A
A
N/A N/A N/A A
N/A
A: 可以使用

格雷码简介及格雷码与二进制的转换程序

格雷码简介及格雷码与二进制的转换程序

格雷码简介及格雷码与二进制的转换程序一、格雷码简介格雷码(英文:Gray Code, Grey Code,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-EmlleBaudot发明的一种编码[1] ,因Frank Gray于1953年申请专利“Pulse Code Communication”得名。

当初是为了机械应用,后来在电报上取得了巨大发展[2],现在则常用于模拟-数字转换[3]和转角-数字转换中[4] 。

典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便[5] 。

格雷码属于可靠性编码,是一种错误最小化的编码,因为它大大地减少了由一个状态到下一个状态时电路中的混淆。

由于这种编码相邻的两个码组之间只有一位不同,因而在用于模-数转换中,当模拟量发生微小变化而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性.这就允许代码电路能以较少的错误在较高的速度下工作。

格雷码在现代科学上获得了广泛的应用,人们还发现智力玩具九连环的状态变化符合格雷码的编码规律,汉诺塔的解法也与格雷码有关。

除了已知的特点,格雷码还有一些鲜为人知的性质。

多数数字电子技术和计算机技术的文献认为格雷码是无权码,只有J.F.A.Thompson认为可以从格雷码直接转换成十进制数[6]。

如果将格雷码的“权”及格雷码的奇偶性等性质在数学上给予证明,将有助于格雷码研究与应用的发展,有助于自动化技术的发展,还可有助于计算机科学的发展。

二、格雷码与二进制的转换程序* 本程序采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位)* 推导方式如下(以三位格雷码为例):* 序号格雷码格雷码实值二进制码二进制实值* 0 000 0 000 0* 1 001 1 001 1* 2 011 3 010 2* 3 010 2 011 3* 4 110 6 100 4* 5 111 7 101 5* 6 101 5 110 6* 7 100 4 111 7* 由上面的数据可看出.如果,按照序号01327645的方式遍历格雷码.其编* 码实值是按自然数顺序排列.反之,如果按此顺序遍历其二进制实值.则会发* 现遍历过的数据的个数减一即为二进制码所对应格雷码的实值.再观察序号* 顺序,我们会发现: 如果把二进制码分半,前半部分从前向后遍历,后半部分* 从后向前遍历.如果分半部分可再分,则再将其分半.并按照前半部分从前向* 后遍历(分解),后半部分从后向前遍历的方式遍历(分解).直到不可分.即可* 实现按序号所描述顺序遍历二进制码.如果,按此顺序遍历二进制码,我们可* 以很方便地在序列中找到所要的二进制码与其对应的格雷码.本思想可以很* 方便地用递归实现.这样就实现了二进制到格雷码的转换.同样,格雷码到二* 进制的转换,也可以用相同的方法推出.为了加快运算,我们跳过不必要的遍* 历将递归改为递推.这样就实现了格雷码与二进制之间的快速转换.* 此算法的时间复杂度约为O(n),n为要转换数据的BIT数.* ****************************************************************** 补充说明:* 其它的转换方法还有* 1、查表法(建立一个二进制与格雷码的对应表)* 2、公式法(根据卡诺图建立一个二进制到格雷码的每一位的公式)*///#define test#i nclude <stdio.h>#ifdef test#i nclude <time.h>#endif/*** 二进制转换成格雷码* @param lStart lValue所在区间下界* @param lEnd lValue所在区间上界* @param lValue 要转换的二进制数的实值* @return 返回格雷码对应的二进制数的实值* @see g2b() g2b 格雷码转换二进制* @see BtoG() BtoG 二进制转换格雷码* @see GtoB() BtoG 格雷码转换二进制* @author 黄毅* @useage a=b2g(0,15,4); //取得4所对应格雷码的二进制值结果a等于6* @memo lValue的值必须在区间[lStart,lEnd]里,否则无法求得所求结果.相应地,如果区间越小,求得结* 果所用的时间就越少.而且lStart,lEnd的值必须为2的N次方减1. 通常lStart为0.为了方便求得* 其值,建议使用BtoG()函数来进行操作.不过这样会使计算时间加长到原来的120%~180%.*/unsigned long b2g(unsigned long lStart,unsigned long lEnd,unsignedlong lValue){unsigned long Start=lStart,End=lEnd,Temp=0,Counter=0;bool Type=true;while(Start<End){Temp=(End+Start-1)>>1;if (lValue<=Temp){if(!Type)Counter+=((End-Start+1)>>1);End=Temp;Type=true;}else{if(Type)Counter+=((End-Start+1)>>1);Start=++Temp;Type=false;}}return Counter;}/*** 格雷码转换成二进制* @param lStart lValue对应二进制数所在区间下界* @param lEnd lValue对应二进制数所在区间上界* @param lValue 要转换的格雷码的实值* @return 返回二进制数对应的格雷码的实值* @see b2g() b2g 二进制转换格雷码* @see BtoG() BtoG 二进制转换格雷码* @see GtoB() BtoG 格雷码转换二进制* @author 黄毅* @useage a=b2g(0,15,6); //取得6所对应二进制值的格雷码结果a等于4* @memo lValue对应二进制数的值必须在区间[lStart,lEnd]里,否则无法求得所求结果.相应地,如果区* 间越小,求得结果所用的时间就越少.而且lStart,lEnd的值必须为2的N次方减1. 通常lStart 为0.* 为了方便求得其值,建议使用GtoB()函数来进行操作.但会使计算时间加长到原来的105%~14 0%.*/unsigned long g2b(unsigned long lStart,unsigned long lEnd,unsignedlong lValue){unsigned long Start=lStart,End=lEnd,Counter=0,Temp=0;bool Type=true;while(Start<End){Temp=Counter+((End-Start+1)>>1);if(Type^(lValue<Temp)){if(Type) Counter=Temp;Start=(Start+End+1)>>1;Type=false;}else{if(!Type) Counter=Temp;End=(Start+End-1)>>1;Type=true;}}return Start;}//b2g外壳程序,用来算lStart,lEnd;long BtoG(unsigned long lValue){register unsigned long lV=lValue,lMax=1; while (lV>0){lV>>=1;lMax<<=1;}if (lMax==0) return -1;return b2g(0,--lMax,lValue);}//g2b外壳程序long GtoB(unsigned long lValue){register unsigned long lV=lValue,lMax=1; while (lV>0){lV>>=1;lMax<<=1;}if (lMax==0) return -1;return g2b(0,--lMax,lValue);}main(){long input=0;#ifdef test//程序测试部分clock_t cStart,cEnd;unsigned long dTime;cStart=clock();for (input=0;input<9999999;input++)BtoG(32768);cEnd=clock();dTime=(cEnd-cStart);printf("BtoG: %ld / %ld\n",dTime,CLOCKS_PER_SEC);//------------------------------------------------------cStart=clock();for (input=0;input<9999999;input++)b2g(0,65535,32768);cEnd=clock();dTime=(cEnd-cStart);printf("b2g: %ld / %ld\n",dTime,CLOCKS_PER_SEC);//------------------------------------------------------cStart=clock();for (input=0;input<9999999;input++)GtoB(32768);cEnd=clock();dTime=(cEnd-cStart);printf("GtoB: %ld / %ld\n",dTime,CLOCKS_PER_SEC);//------------------------------------------------------cStart=clock();for (input=0;input<9999999;input++)g2b(0,65535,32768);cEnd=clock();dTime=(cEnd-cStart);printf("g2b: %ld / %ld\n",dTime,CLOCKS_PER_SEC);#else//程序演试部分printf("Input(HEX):");scanf("%x",&input);while (input!=-1){printf("------BtoG------\nBinary:%08Xh\nGray:%08Xh\n------GtoB------\nGray:%08Xh\nBinary:%08Xh\n----------------\n",input,BtoG(input),input,GtoB(input)); printf("Input(HEX):");scanf("%x",&input);}#endif。

格雷码与二进制

格雷码与二进制

C语言测控系统程序设计格雷码与二进制转换实验报告学生姓名:黄永杰学号:1110200601 实验的目的:1.了解计算机内部的数都使用二进制数表示,编码不同。

2.熟悉一组二进制数表示的数值或含义也不同。

3.熟悉反码补码偏移码的含义。

4.了解格雷码亦称反射二进制码,常用于数字测量元件,如光电码盘,光栅。

5.格雷码与二进制码的比较实验用设备:试验设备连接:实验要求:1.采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位)推导方式如下(以三位格雷码为例):*序号格雷码格雷码实值二进制码二进制实值* 0 000 0 000 0* 1 001 1 001 1* 2 011 3 010 2* 3 010 2 011 3* 4 110 6 100 4* 5 111 7 101 5* 6 101 5 110 6* 7 100 4 1 11 7设计和计算:程序框图:程序清单和注释:#define test#i nclude <stdio.h>#ifdef test#i nclude <time.h>#endif/*** 二进制转换成格雷码* @param lStart lValue所在区间下界* @param lEnd lValue所在区间上界* @param lValue 要转换的二进制数的实值* @return 返回格雷码对应的二进制数的实值* @see g2b() g2b 格雷码转换二进制* @see BtoG() BtoG 二进制转换格雷码* @see GtoB() BtoG 格雷码转换二进制* @author 黄毅* @useage a=b2g(0,15,4); //取得4所对应格雷码的二进制值结果a等于6* @memo lValue的值必须在区间[lStart,lEnd]里,否则无法求得所求结果.相应地,如果区间越小,求得结* 果所用的时间就越少.而且lStart,lEnd的值必须为2的N次方减1. 通常lStart为0.为了方便求得* 其值,建议使用BtoG()函数来进行操作.不过这样会使计算时间加长到原来的120%~180%.*/unsigned long b2g(unsigned long lStart,unsigned long lEnd,unsigned long lValue)unsigned long Start=lStart,End=lEnd,Temp=0,Counter=0; bool Type=true;while(Start<End){Temp=(End+Start-1)>>1;if (lValue<=Temp){if(!Type)Counter+=((End-Start+1)>>1);End=Temp;Type=true;}else{if(Type)Counter+=((End-Start+1)>>1);Start=++Temp;Type=false;}}return Counter;/*** 格雷码转换成二进制* @param lStart lValue对应二进制数所在区间下界* @param lEnd lValue对应二进制数所在区间上界* @param lValue 要转换的格雷码的实值* @return 返回二进制数对应的格雷码的实值* @see b2g() b2g 二进制转换格雷码* @see BtoG() BtoG 二进制转换格雷码* @see GtoB() BtoG 格雷码转换二进制* @author 黄毅* @useage a=b2g(0,15,6); //取得6所对应二进制值的格雷码结果a等于4* @memo lValue对应二进制数的值必须在区间[lStart,lEnd]里,否则无法求得所求结果.相应地,如果区* 间越小,求得结果所用的时间就越少.而且lStart,lEnd的值必须为2的N次方减1. 通常lStart为0.* 为了方便求得其值,建议使用GtoB()函数来进行操作.但会使计算时间加长到原来的105%~140%.*/unsigned long g2b(unsigned long lStart,unsigned long lEnd,unsigned long lValue)unsigned long Start=lStart,End=lEnd,Counter=0,Temp=0; bool Type=true;while(Start<End){Temp=Counter+((End-Start+1)>>1);if(Type^(lValue<Temp)){if(Type) Counter=Temp;Start=(Start+End+1)>>1;Type=false;}else{if(!Type) Counter=Temp;End=(Start+End-1)>>1;Type=true;}}return Start;}//b2g外壳程序,用来算lStart,lEnd;long BtoG(unsigned long lValue){register unsigned long lV=lValue,lMax=1; while (lV>0){lV>>=1;lMax<<=1;}if (lMax==0) return -1;return b2g(0,--lMax,lValue);}//g2b外壳程序long GtoB(unsigned long lValue){register unsigned long lV=lValue,lMax=1; while (lV>0){lV>>=1;lMax<<=1;}if (lMax==0) return -1;return g2b(0,--lMax,lValue);}main(){long input=0;#ifdef test//程序测试部分clock_t cStart,cEnd;unsigned long dTime;cStart=clock();for (input=0;input<9999999;input++)BtoG(32768);cEnd=clock();dTime=(cEnd-cStart);printf("BtoG: %ld / %ld\n",dTime,CLOCKS_PER_SEC); //------------------------------------------------------cStart=clock();for (input=0;input<9999999;input++)b2g(0,65535,32768);cEnd=clock();dTime=(cEnd-cStart);printf("b2g: %ld / %ld\n",dTime,CLOCKS_PER_SEC);//------------------------------------------------------cStart=clock();for (input=0;input<9999999;input++)GtoB(32768);cEnd=clock();dTime=(cEnd-cStart);printf("GtoB: %ld / %ld\n",dTime,CLOCKS_PER_SEC); //------------------------------------------------------cStart=clock();for (input=0;input<9999999;input++)g2b(0,65535,32768);cEnd=clock();dTime=(cEnd-cStart);printf("g2b: %ld / %ld\n",dTime,CLOCKS_PER_SEC); #else//程序演试部分printf("Input(HEX):");scanf("%x",&input);while (input!=-1){printf("------BtoG------\nBinary:%08Xh\nGray:%08Xh\n------GtoB------\nGray:%08Xh\nBinary:%08Xh\n----------------\n",input,BtoG(input),input,GtoB (input));printf("Input(HEX):");scanf("%x",&input);}#endif调试中出现的错误及分析:暂时没发现错误。

格雷码和二进制码之间的转换

格雷码和二进制码之间的转换

二进制与格雷码之间的转换在公司的PLC 改造项目中,我们经常要用到格雷码输出的绝对型旋转编码器。

由于格雷码是一种非加权码,不能直接反应出当前的角度值,所以必须在PLC 程序中将它转换成能反应当前实际位置的二进制码。

为了让我们的工程技术人员均能很好的掌握格雷码与二进制码之间的转换方法,我根据自己的一些经验和参考资料,将格雷码的相关知识作了些整理,在公司的刊物上发表出来,希望能和大家一起对这个问题来加以讨论和学习,共同提高我们的技术水平。

一、 格雷码格雷码((Gray Code )的概念格雷码是我们在工程中常会遇到的一种编码方式,例如,大多数绝对型旋转编码的输出就是采用格雷码的编码格式。

它是一种非加权码,由二进制码派生而来。

常用的二进制数与格雷码间的转换关系如下表:从上表我们可以看出,与普通二进制编码相比,格雷码的特点是相邻两个数之间只有1个二进制位发生了变化。

正是这个特点,使它更适合于用在数据传输的场合。

二、 二进制与格雷码之间的转换(一)、二进制码转为格雷码二进制码转为格雷码的算法较简单,将所需转换的数的二进制码右移一位后与原数相异或即可。

例:十进制数9的格雷码为:数值 二进制码格雷码 数值 二进制码格雷码0 0000 0000 9 1001 1101 1 0001 0001 10 1010 1111 2 0010 0011 11 1011 1110 30011 0010 12 1100 1010 40100 0110 13 1101 1011 50101 0111 14 1110 1001 60110 0101 15 1111 1000 70111 0100 81000 1100 9的二进制数形式 9的格雷码形式 9的二进制数右移1位后的结果 两者相异或(二)、格雷码转为二进制码格雷码转为二进制码的算法则较为繁琐,计算公式如下: Rn 为n 位的格雷码,Cn 为转换后的二进制码C n = R n ,C n-1 = R n R ⊕n-1,C n-2 = R n R ⊕n-1R ⊕n-2,…C 1 = R n R ⊕n-1R ⊕n-2…R ⊕⊕2R ⊕1,C 0 = R n R ⊕n-1R ⊕n-2…R ⊕⊕2R ⊕1R ⊕0例:格雷码(1001)转位二进制数C 4= R 4=1C 3= R 4⊕R 3=1⊕0=1C 2= R 4⊕R 3⊕R 2= C 3⊕R 2=1⊕0=1C1= R 4⊕R 3⊕R 2⊕R1= C 2⊕R 1=1⊕1=0三、 编程举例根据工业控制的特点,现分别给出在PLC 梯形图中和在VB 中实现格雷码转二进制码的程序。

格雷码 二进制码转换(xuesheng)

格雷码 二进制码转换(xuesheng)

标准逻辑位矢量 表示有两个输入 端a0和a1
电路的表达式已知,如果是20位的格雷 码转换为20位的二进制码,?????
由于表达式非常相似,故可以考虑用循 环语句。Loop语句
实验报告要求
1、设计文档,即设计报告 ★ 封面: 包括名称,学号,姓名,院系,指导教师,时间等; ★ 摘要和关键词; ★ 目录; ★ 正文: *设计要求说明 *方案论证(整体电路的工作原理) *各子模块设计原理 *调试 *仿真
B3 G3 B2 B3 G 2 B1 B 2 G 1 B 0 B1 G 0
Gi Bi Gi B ( i 1) Bi
G3 B3 G 2 B3 B2 G 1 B 2 B1 G 0 B1 B 0
如何编组
如何编组
输入组名
如何设置数据类型
如何设置数据类型
如何生成模块
练习:VHDL语言描述4为二进制转换为格雷码的电路,观 察输入输出波形,编译无误后下载到实验箱进行验证。 • 工程的顶层设计实体名一定要和设计文件中的实体名匹配。
电路的表达式未知或者很难用 得到电路的表达式????
由于case属于顺序语句, 在VHDL中顺序语句只能存 在与进程中。
格雷码变换电路
实验目的:
1)用组合电路设计4位格雷码/二进制码变换电路。 2)学习利用原理图输入法设计简单逻辑电路的方法。
实验内容: 1)采用原理图输入方法设计4位格雷码/二进制码变换电路。 2)建立仿真文件对该电路进行功能仿真。 3) 将该电路下载至实验箱验证其逻辑功能。
实验原理
Bi Gi Bi B ( i 1) Gi
VHDL 常用基本语句
进程语句
进程主要用于描述顺序语句,其格式如下:

二进制码和格雷码的转换

二进制码和格雷码的转换

二进制码和格雷码的转换二进制码(Binary code)和格雷码(Gray code)是两种表示数字的编码方式。

它们之间的转换可以通过以下方法实现:1.二进制码转格雷码:o从左到右,将二进制码的第一位保持不变作为格雷码的第一位。

o从左到右依次处理二进制码的每一位,按照以下规则确定格雷码的对应位:▪如果当前的二进制位与前一位相同,则对应格雷码位为0。

▪如果当前的二进制位与前一位不同,则对应格雷码位为1。

o重复上述步骤,直到处理完所有位数,得到相应的格雷码。

2.格雷码转二进制码:o从左到右,将格雷码的第一位保持不变作为二进制码的第一位。

o从左到右依次处理格雷码的每一位,按照以下规则确定二进制码的对应位:▪如果当前的格雷码位与对应的二进制码位相同,则对应二进制码位为0。

▪如果当前的格雷码位与对应的二进制码位不同,则对应二进制码位为1。

o重复上述步骤,直到处理完所有位数,得到相应的二进制码。

下面是一个示例,将二进制码0101转换为格雷码和将格雷码0110转换为二进制码的过程:•二进制码0101转换为格雷码:o首位保持不变:0o第二位:0 ⊕ 1 = 1o第三位:1 ⊕ 0 = 1o第四位:0 ⊕ 1 = 1o最终格雷码:0111•格雷码0110转换为二进制码:o首位保持不变:0o第二位:0 ⊕ 1 = 1o第三位:1 ⊕ 1 = 0o第四位:0 ⊕ 0 = 0o最终二进制码:0100使用这些规则,可以在二进制码和格雷码之间进行相互转换。

这种转换在数字通信和数字电路设计中经常用到。

格雷码和二进制码的转换

格雷码和二进制码的转换

格雷码和二进制码的转换二进制码转换成格雷码:**原理**格雷码的构成一般有两部分:高位公共位(Most Significant Digits,MSD)和低位变化位(Least Significant Digits,LSD)。

MSD部分包含的是所有位都相同的值,它是根据二进制码的最高位(MSB)来直接确定的。

确定MSD之后,LSD部分根据二进制码的其它位值得到:如果二进制码中某一位是0,则其关联格雷位跟MSD相同;如果某一位是1,则其关联格雷位跟MSD相反。

**转换步骤**(1)确定MSB,将其作为格雷码的MSD。

(2)从LSB开始,根据二进制码的值来确定格雷码位:如果二进制码位是0,则格雷码位跟MSD相同;如果二进制码位是1,则格雷码位跟MSD相反。

```栗子:101(二进制)——> 111(格雷码)步骤:(1)MSB = 1,格雷码的最高位也是1。

(2)LSB = 01,由于二进制码中,LSB为0,因此格雷码的最低位也是1.(3)二进制码的中间位是1,因此,与MSD相反,格雷码的中间位应该设置为0。

综上,101的格雷码为111.```格雷码转换成二进制码:**原理**格雷码的构成一般有两部分:高位公共位(Most Significant Digits,MSD)和低位变化位(Least Significant Digits,LSD)。

MSD部分包含的是所有位都相同的值,它是根据格雷码的最高位(MSB)来直接确定的。

确定MSD之后,LSD部分根据格雷码的其它位值得到:如果格雷码中某一位跟MSD相同,则其关联二进制位应该是0;如果某一位跟MSD相反,则其关联二进制位应该是1。

**转换步骤**(1)确定MSB,将其作为二进制码的MSB。

(2)从LSB开始,根据格雷码的值来确定二进制码位:如果格雷码位跟MSD 相同,则二进制位为0;如果格雷码位跟MSD相反,则二进制位为1。

```栗子:111(格雷码)——> 101(二进制)步骤:(1)MSB = 1,二进制码的最高位也是1。

(电子-电路)奇偶校验,2421码转换余三码,4bit二进制转格雷码电路设计说明

(电子-电路)奇偶校验,2421码转换余三码,4bit二进制转格雷码电路设计说明
假设四位二进制为A3A2A1A0,在二进制前面补一 个空位,记住A4=0:
则将二进制码转换成格雷码G3G2G1G0
A⊕B = AB' + A'B
3.2 4-bit格雷码转二进制电路
假设格雷码是G3G2G1G0,在格雷码的前面补一个 空位,记作A4
则将格雷码转换成二进制A3A2A1A0
3.3 深入:比较两个电路,如果引入控制端S,当S 为1时,B2G(二进制转换为格雷码),S=0时, G2B,如何设计?
则波形图如下所示:
1.2接收到的1组数据存储从A8-A0,其中假设A8是校验位, 设计一个校验电路电路(可以用异或门构建),如果校验 出错就点亮LED。(提示 A1⊕A2⊕-----⊕A8=?)
2、设计电路,画出电路图,实现将4位2421码转换 为余3码。分别采用无关项设计和不采用无关项设计 实现,说明使用无关项的时候的设计会有什么问题, 不使用无关项设计的时候怎么设计合理.
(提示:画真值表,卡诺图化简,然后画电路图)
1、先画出卡诺图化简:
①采用无关项
画出电路图:
②不采用无关项
卡诺图化简:
②不采用无关项
卡诺图化简:
②不采用无关项
画出电路图:
使用无关项的时候有可能发生静态冒险。
3 利用异或门设计:4-bit二进制转格雷码电路;4-bit格雷 码转二进制电路;说说你的设计中使用了哪些异或运算的定 理,n-bit的转换电路最少需要多少个异或门;深入:比较两 个电路,如果引入控制端S,当S为1时,B2G(二进制转换为 格雷码),S=0时,G2B,如何设计?
数电第二次研讨课
205组
1、假设计算机的UART串行通信采用1位起始位0, 8位数据位,1位偶校验位,1位停止位进行通信。 假如发送的数据是0xA1,请画出波形图。(偶校验 要求数据位与校验位这9位的1的个数是偶数)

二进制与格雷码之间的转换

二进制与格雷码之间的转换

二进制与格雷码之间的转换在公司的PLC 改造项目中,我们经常要用到格雷码输出的绝对型旋转编码器。

由于格雷码是一种非加权码,不能直接反应出当前的角度值,所以必须在PLC 程序中将它转换成能反应当前实际位置的二进制码。

为了让我们的工程技术人员均能很好的掌握格雷码与二进制码之间的转换方法,我根据自己的一些经验和参考资料,将格雷码的相关知识作了些整理,在公司的刊物上发表出来,希望能和大家一起对这个问题来加以讨论和学习,共同提高我们的技术水平。

一、 格雷码(Gray Code )的概念格雷码是我们在工程中常会遇到的一种编码方式,例如,大多数绝对型旋转编码的输出就是采用格雷码的编码格式。

它是一种非加权码,由二进制码派生而来。

常用的二进制数与格雷码间的转换关系如下表:从上表我们可以看出,与普通二进制编码相比,格雷码的特点是相邻两个数之间只有1个二进制位发生了变化。

正是这个特点,使它更适合于用在数据传输的场合。

二、 二进制与格雷码之间的转换(一)、二进制码转为格雷码二进制码转为格雷码的算法较简单,将所需转换的数的二进制码右移一位后与原数相异或即可。

例:十进制数9的格雷码为:9的二进制数形式 9的格雷码形式 9的二进制数右移1位后的结果 两者相异或(二)、格雷码转为二进制码格雷码转为二进制码的算法则较为繁琐,计算公式如下: Rn 为n 位的格雷码,Cn 为转换后的二进制码C n = R n ,C n-1 = R n ⊕R n-1,C n-2 = R n ⊕R n-1⊕R n-2,…C 1 = R n ⊕R n-1⊕R n-2⊕…⊕R 2⊕R 1,C 0 = R n ⊕R n-1⊕R n-2⊕…⊕R 2⊕R 1⊕R 0例:格雷码(1001)转位二进制数C 4= R 4=1C 3= R 4⊕R 3=1⊕0=1C 2= R 4⊕R 3⊕R 2= C 3⊕R 2=1⊕0=1C1= R 4⊕R 3⊕R 2⊕R1= C 2⊕R 1=1⊕1=0三、 编程举例根据工业控制的特点,现分别给出在PLC 梯形图中和在VB 中实现格雷码转二进制码的程序。

格雷码转换成二进制

格雷码转换成二进制

EDA设计(二)
VHDL语言实验报告
实验名称:格雷码二进制转换
姓名:
学号:
班级:
实验时间:
一、实验目的
1、用组合电路设计4位格雷码/二进制码变换电路。

2、学习利用原理图和VHDL 语言输入法设计简单逻辑电路的方法。

二、 实验内容
1、采用原理图输入方法设计4位格雷码/二进制码变换电路。

2、采用VHDL 语言输入方法设计格雷码/二进制码变换电路。

三、 实验原理
1、根据如下格雷码转换成二进制代码表格,可以得出如右图的格雷码与二进制的关系:
:
Gi
i B Bi Gi
Bi ⊕+==)1(Bi i B Gi Bi
Gi ⊕+==)1(12123233G B B G B B G B ⊕=⊕=
=
1212323
3B B G B B G
B G ⊕=⊕==
输出波形图:
管脚配置图:
四、小结与体会。

二进制与格雷码转换

二进制与格雷码转换

之阳早格格创做正在粗决定位统造系统中,为了普及统造粗度,准确丈量统造对于象的位子是格中要害的.暂时,检测位子的办法有二种:其一是使用位子传感器,丈量到的位移量由变收器经A/D变更成数字量收至系统举前进一步处理.此要领粗度下,但是正在多路、少距离位子监控系统中,由于其成本下贵,拆置艰易,果此本来不真用;其二是采与光电轴角编码器举止透彻位子统造.光电轴角编码器根据其刻度要领及旗号输出形式,可分为删量式、千万于式以及混同式三种.而千万于式编码器是曲交输出数字量的传感器,它是利用自然二进造或者循环二进造(格雷码)办法举止光电变更的,编码的安排普遍是采与自然二进造码、循环二进造码、二进造补码等.个性是不要计数器,正在转轴的任性位子皆可读出一个牢固的与位子相对于应的数字码;抗搞扰本领强,出用乏积缺面;电源切断后位子疑息不会拾得,但是辨别率是由二进造的位数决断的,根据分歧的粗度央供,不妨采用分歧的辨别率即位数.暂时有10位、11位、12位、13位、14位或者更下位等多种.其中采与循环二进造编码的千万于式编码器,其输出旗号是一种数字排序,不是权沉码,每一位不决定的大小,不克不迭曲交举止比较大小战算术运算,也不克不迭曲交变更成其余旗号,要通过一次码变更,形成自然二进造码,正在由上位机读与以真止相映的统造.而正在码造变更中有分歧的处理办法,本文着沉介绍二进造格雷码与自然二进造码的互换.一、格雷码(又喊循环二进造码或者反射二进造码)介绍正在数字系统中只可辨别0战1,百般数据要变更为二进造代码才搞举止处理,格雷码是一种无权码,采与千万于编码办法,典型格雷码是一种具备反射个性战循环个性的单步自补码,它的循环、单步个性与消了随机与数时出现要害缺面的大概,它的反射、自补个性使得供反非常便当.格雷码属于稳当性编码,是一种过得最小化的编码办法,果为,自然二进造码不妨曲交由数/模变更器变更成模拟旗号,但是某些情况,比圆从十进造的3变更成4时二进造码的每一位皆要变,使数字电路爆收很大的尖峰电流脉冲.而格雷码则不那一缺面,它是一种数字排序系统,其中的所有相邻整数正在它们的数字表示中惟有一个数字分歧.它正在任性二个相邻的数之间变更时,惟有一个数位爆收变更.它大天面缩小了由一个状态到下一个状态时逻辑的殽杂.其余由于最大数与最小数之间也仅一个数分歧,故常常又喊格雷反射码或者循环码.下表为几种自然二进造码与格雷码的对于照表:二、二进造格雷码与自然二进造码的互换1、自然二进造码变更成二进造格雷码自然二进造码变更成二进造格雷码,其规则是死存自然二进造码的最下位动做格雷码的最下位,而次下位格雷码为二进造码的下位与次下位相同或者,而格雷码其余诸位与次下位的供法相类似.2、二进造格雷码变更成自然二进造码二进造格雷码变更成自然二进造码,其规则是死存格雷码的最下位动做自然二进造码的最下位,而次下位自然二进造码为下位自然二进造码与次下位格雷码相同或者,而自然二进造码的其余诸位与次下位自然二进造码的供法相类似.三、二进造格雷码与自然二进造码互换的真止要领1、自然二进造码变更成二进造格雷码A)、硬件真止法(拜睹示例工程中的Binary to Gray) 根据自然二进造变更成格雷码的规则,不妨得到以下的代码:static unsigned int DecimaltoGray(unsigned int x){return x^(x>>1);}//以上代码真止了unsigned int型数据到格雷码的变更,最下可变更32位自然二进造码,超出32位将溢出. static int DecimaltoGray( int x){return x^(x>>1);}//以上代码真止了 int型数据到格雷码的变更,最下可变更31位自然二进造码,超出31位将溢出.上述代码即可用于VC统造步调中,也不妨用于单片机统造步调中.正在单片机步调安排时,若采与汇编谈话编程,不妨按相共的本理安排步调;若采与C谈话编程,则不妨曲交利用上述代码,但是修议用unsigned int函数.B)、硬件真止法根据自然二进造变更成格雷码的规则,不妨得到以下电路图:上图所示电路图即可用同或者集成电路74ls136真止,也不妨利用可编程器件PLD等编程真止.2、二进造格雷码变更成自然二进造码A)、硬件真止法(拜睹示例工程中的 Gray to Binary )根据二进造格雷码变更成自然二进造码的规则,不妨得到以下的三种代码办法:• static unsigned int GraytoDecimal(unsigned int x)• {• unsigned int y = x;• while(x>>=1)• y ^= x;• return y;• }• static unsigned int GraytoDecimal(unsigned int x)• {• x^=x>>16;• x^=x>>8;• x^=x>>4;• x^=X>>2;• x^=x^1;• return x;• }• static unsigned int GraytoDecimal(unsigned int x)• {• int i;• for(i=0;(1<<i)<sizeof(x)*8;i++)• {• x^=x>>(1<<i);• }• return x;• }//以上代码真止了unsigned int型数据到自然二进造码的变更,最下可变更32位格雷码,超出32位将溢出.将数据典型改为int型即可真止31位格雷码变更.上述代码即可用于VC统造步调中,也不妨用于单片机统造步调中.正在单片机步调安排时,若采与汇编谈话编程,不妨按相共的本理安排步调;若采与C谈话编程,则不妨曲交利用上述代码,但是修议用unsigned int 函数.B)、硬件真止法根据二进造格雷码变更成自然二进造码的规则,不妨得到以下电路图:上图所示电路图即可用同或者集成电路74ls136真止,也不妨利用可编程器件PLD等编程真止.。

格雷码 二进制码转换

格雷码 二进制码转换
• 工程的顶层设计实体名一定要和设计文件中的实体名匹配。
• 简介 • 基本结构 • 基本语句 • 设计组合电路 • 设计时序电路
VHDL硬件描述语言基础
简介
VHDL硬件描述语言基础
• 传统数字电路设计方法不适合设计大规模的系统。
• 众多软件公司开发研制了具有自己特色的电路硬件描 述语 言 ( Hardware Description Language,HDL ) , 存在着很大的差异。因此,硬件设计工程师需要一种 强大的、标准化的硬件描述语言,作为可相互交流的 设计环境。
end and_gate;
3 Port中定义了信号名、端口模式、端口类型。 信号名为标识符,要符合标识符的命名规则 端口模式包括:in、out、inout、buffer。 端口类型定义端口的数据类型,
4 其对应的原理图为: a b
&y
5 要用关键字end结束该实体
VHDL 语言的基本结构
VHDL 数据类型 VHDL 数据类型分为逻辑数据类型和数值数据类型。
STD库是标准库,常用的程序包为standard。 standard程序包定义了基本数据类型(如:bit数据类型等)和 函数及各种类型之间的转换。该程序包实际应用中已经隐性打开, 不需要用use语句另外说明。
IEEE库是按照国际IEEE组织制定的工业标准进行编写的标准 资源库,常用程序包为std_logic_1164程序包, std_logic_signed和std_logic_unsigned程序包, std_logic_arith程序包。
实体
VHDL 的标识符(Identifiers)
实体名为VHDL标识符的一种。标识符是用户给常量、变量、 信号、端口、子程序或参数定义的名字
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书题目:二进制与格雷码转换设计学生姓名:学号:学院:班级:指导教师:二○一二年七月七日摘要论文题目为设计一个将串行输入的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作为输出端。

如图所示,方案二:(转码部分)将右边公式写成最小项形式,以图示4位为例,取有4位地址输入,4位地址输出的2*4位ROM,如图接线,按照逻辑函数的要求存入相应的数据,即可将二进制码转换为格雷码。

(输出端)选取74LS166作为输出端。

如图所示,技术性比较:(转码部分)二者皆为输入既得输出,完成的功能上优劣相当。

方案一采用门电路,需要3个D触发器,连线相对较多但简单,操作方便,且维修时可查出具体出现故障的片;而方案二虽只用一个器件,但一旦出现故障只能整片都换,成本提高了,且它需首先进行计算、编码,按要求存入数据再运行,程序相对复杂。

经过比较,最终选择方案一。

功能比较与联系实际:74LS166可直接实现并行输入与串行输出之间的转化,即一步到位,但由于实验室没有该器材,考虑到实际情况,我们改用74LS194,运用此器件需进行状态转化,操作步骤比74LS166复杂,但在条件允许下,最终选择方案一。

三电路组成及工作原理1.输入部分由3位D触发器构成的移位寄存器,在时钟脉冲的作用下,依次将由J1控制输入的3位二进制数移入移位寄存器中,触发在上升沿,如图所示。

2.555定时器3.输出部分首先将S1、S0端设置为1、1,使74LS194工作在并行输入状态,当3位格雷码数并行输入后,将S1、S0改接为0、1,使74LS194工作在右移状态,在时钟脉冲控制下从QC端串行输出,脉冲触发在上升沿。

同时将R0、DIR接高电平。

四 电路元器件选择与计算1.时钟脉冲的选择输入端移位寄存器的时钟脉冲CLK1选CD555,其管脚外形图及逻辑电路如图所示;输出端74LS194的时钟脉冲CLK2直接接脉冲发生器,其频率设置为CLK1的2倍。

图3 CD555引脚排列图图4 CD555内部结构图TRIG 2Q 3R4CVolt5THR 6DIS 7VCC 8GND 1CD555TR5kR 5kR5k A1A2VccVco Vi1Vi2Vp725684Vc1Vc2VoRd QQG1G2G313五安装与调试1.安装(1)将电原理图画成印刷电路板的黑白图并制板。

(2)认真安装焊接。

2.测试方案(1)调输入、转码单元A:按如下仿真图连线,检查无误后接通电源B:调试串行输入端及转码部分(2)调试555定时器(3)调串行输出端3.调试过程(1)调输入、转码单元调手动控制输入端J1分别置入不同的数通过灯泡亮灭观察是否实现移位寄存,且在异或门输出端是否实现转码。

以输入110为例,高位在右,效果图如下所示:(2)调试555定时器(3)调试串行输出端首先,当3位格雷码并行输入后,将J2转接0实现74LS194的右移串行输出,由示波器XSC2观察输出波形,如下所示:4.调试中发现的问题及解决措施(1)输入速率太快,来不及手动设定输入数据。

经555定时器对周期进行改变,实现了数据输入的可控性。

(2)通过J2改变74LS194的工作状态时有时间延误,此时可能输入数据已变。

同样经555定时器调试使周期延长能使74LS194的工作状态来得及改变。

(3)通过示波器观察波形时由于时间误差,出现波形重叠。

通过调节接入74LS194的脉冲发生器的频率使观察具体,这里设定其频率为555定时器的2倍。

(4)没有输出显示。

片74LS194的工作状态没有改变,应在数据并行输入后调至串行输出状态。

且右移时需将SR 端接数,可接1也可接0.六.指标测试1.单元电路功能测试2.整体电路功能测试单元电路经静态和动态调试、测试正常后,即可对课题要求的整体电路技术指标进行测试,记录测试数据,并对测试数据进行分析,最后得出测试结论,确定电路的技术指标是否符合设计要求。

如果技术指标不符合设计要求,则应仔细检查分析问题所在,提出调整和修改建议。

结论在此次课程设计中完成了下述工作和取得的进步:1.进行了设计任务的需求分析,完成了总体结构图的设计,进行了经济性和技术性比较并确定了最终方案。

2.经过一个星期的实习,过程曲折可谓一语难尽。

在此期间我们也失落过,也曾一度热情高涨。

从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。

3.通过这次课程设计,加强了我们动手、思考和解决问题的能力。

在整个设计过程中,我们通过这个方案包括设计了一套电路原理和连接图,和芯片上的选择。

4. 我在做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。

5.此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。

心得体会经过一个星期的实习,过程曲折可谓一语难尽。

在此期间我们也失落过,也曾一度热情高涨。

从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。

生活就是这样,汗水预示着结果也见证着收获。

劳动是人类生存生活永恒不变的话题。

通过实习,我才真正领略到“艰苦奋斗”这一词的真正含义,我才意识到老一辈电子设计为我们的社会付出。

我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的合作,我感觉我和同学们之间的距离更加近了;我想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋;正所谓“三百六十行,行行出状元”。

我们同样可以为社会作出我们应该做的一切,这有什么不好?我们不断的反问自己。

也许有人不喜欢这类的工作,也许有人认为设计的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就可。

社会需要我们,我们也可以为社会而工作。

既然如此,那还有什么必要失落呢?于是我们决定沿着自己的路,执着的走下去。

同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。

某个人的离群都可能导致导致整项工作的失败。

实习中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。

团结协作是我们实习成功的一项非常重要的保证。

而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

对我们而言,知识上的收获重要,精神上的丰收更加可喜。

挫折是一份财富,经历是一份拥有。

这次实习必将成为我人生旅途上一个非常美好的回忆!通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的辛勤指导下,终于游逆而解。

同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!参考文献[1] 阎石.数字电子技术基础(第五版)[M].北京:高等教育出版社.2006[2] 中国集成电路大全编委会.中国集成电路大全—TTL集成电路[M].北京:国防工业出版社.1985:567-600[3] 房建东荀延龙王艳荣等.电子技术[M].呼和浩特:内蒙古大学出版社.2004[4] 学生自查文献设计所需仪器设备及元器件清单序号名称型号及使用参数数量备注可调直流稳压电源DICE-DG 1台数字万用表DT-830B 1块实验板一块硬芯线3米示波器1台计数器CC4518 1片振荡兼分频器CC4060 1片4060或施密特触发器CC40106 1片40106有一种即可单稳态触发器CC4098 1片CMOS二输入与非门CC4011 2个555定时器NE555 4片555定时器NE556 2片电阻10kΩ/0.125W 若干电阻100kΩ/0.125W 若干电阻150kΩ/0.125W 若干电阻1MΩ/0.125W 若干电阻150Ω/0.125W 若干电位器300kΩ/0.125W 若干电位器10kΩ/0.125W 若干电位器150Ω/0.125W 若干电解电容10μF/25-60V 若干电解电容47μF/25-60V 若干电解电容100μF/25-60V 若干电解电容1μF/25-50V 若干电容0.01μF/25-60V 若干扬声器8Ω/0.5W 1个发光管(高亮LED)5mm红/绿若干晶体管90133个晶体管90143个运放LM3583个附:参考文献书写格式:(1)普通图书[序号] 作者姓名.书名[M].出版地:出版者.出版年.(2)会议录、论文集[序号] 主要责任者.题名:其他题名信息[C].其他责任者.版本项.出版地:出版者,出版年:引文页码[引用日期].(3)科技报告[序号] 主要责任者.题名:其他题名信息[R].其他责任者.版本项.出版地:出版者,出版年:引文页码[引用日期].(4)学位论文[序号] 作者姓名.论文题目[D].学位授予单位所在地:学位授予单位名称,年.(5)专利文献[序号] 专利申请者或所有者.专利题名:专利国别,专利号[P].公告日期或公开日期.(6)专著中析出的文献[序号] 析出文献主要责任者.析出文献题名[文献类型标志]//专著主要责任者.专著题名.出版地:出版者.出版年.(7)期刊中析出的文献[序号] 析出文献主要责任者.析出文献题名[文献类型标志].期刊名,年,卷(期):页码[引用日期].(8)报纸中析出的文献[序号] 析出文献主要责任者.析出文献题名[文献类型标志].报纸名,出版日期(版次).(9)电子文献(包括专著或连续出版物中中析出的电子文献)[序号]主要责任者.题名:其他题名信息[文献类型标志/文献载体标志].出版地:出版者,出版年(更新或修改日期)[引用日期].获取和访问路径.注:各参考文献的类型及其标志代码如表1所示;各电子文献的载体及其标志代码如表1所示。

相关文档
最新文档