华中科技大学计算机学院数字逻辑实验报告2
- 格式:doc
- 大小:567.00 KB
- 文档页数:20
一、实验目的1. 理解数字逻辑的基本概念和基本原理。
2. 掌握数字逻辑电路的基本分析方法,如真值表、逻辑表达式等。
3. 熟悉常用数字逻辑门电路的功能和应用。
4. 提高数字电路实验技能,培养动手能力和团队协作精神。
二、实验原理数字逻辑电路是现代电子技术的基础,它主要研究如何用数字逻辑门电路实现各种逻辑功能。
数字逻辑电路的基本元件包括与门、或门、非门、异或门等,这些元件可以通过组合和连接实现复杂的逻辑功能。
1. 与门:当所有输入端都为高电平时,输出端才为高电平。
2. 或门:当至少有一个输入端为高电平时,输出端为高电平。
3. 非门:将输入端的高电平变为低电平,低电平变为高电平。
4. 异或门:当输入端两个高电平或两个低电平时,输出端为低电平,否则输出端为高电平。
三、实验内容1. 实验一:基本逻辑门电路的识别与测试(1)认识实验仪器:数字电路实验箱、逻辑笔、示波器等。
(2)识别与测试与门、或门、非门、异或门。
(3)观察并记录实验现象,分析实验结果。
2. 实验二:组合逻辑电路的设计与分析(1)设计一个简单的组合逻辑电路,如加法器、减法器等。
(2)根据真值表列出输入输出关系,画出逻辑电路图。
(3)利用逻辑门电路搭建电路,进行实验验证。
(4)观察并记录实验现象,分析实验结果。
3. 实验三:时序逻辑电路的设计与分析(1)设计一个简单的时序逻辑电路,如触发器、计数器等。
(2)根据电路功能,列出状态表和状态方程。
(3)利用触发器搭建电路,进行实验验证。
(4)观察并记录实验现象,分析实验结果。
四、实验步骤1. 实验一:(1)打开实验箱,检查各电路元件是否完好。
(2)根据电路图连接实验电路,包括与门、或门、非门、异或门等。
(3)使用逻辑笔和示波器测试各逻辑门电路的输出,观察并记录实验现象。
2. 实验二:(1)根据实验要求,设计组合逻辑电路。
(2)列出真值表,画出逻辑电路图。
(3)根据逻辑电路图连接实验电路,包括所需逻辑门电路等。
一、实验目的1. 理解和掌握数字逻辑设计的基本原理和方法。
2. 熟悉数字电路的基本门电路和组合逻辑电路。
3. 培养动手能力和实验技能,提高逻辑思维和解决问题的能力。
4. 熟悉数字电路实验设备和仪器。
二、实验原理数字逻辑设计是计算机科学与技术、电子工程等领域的基础课程。
本实验旨在通过实际操作,让学生掌握数字逻辑设计的基本原理和方法,熟悉数字电路的基本门电路和组合逻辑电路。
数字逻辑电路主要由逻辑门组成,逻辑门是数字电路的基本单元。
常见的逻辑门有与门、或门、非门、异或门等。
根据逻辑门的功能,可以将数字电路分为组合逻辑电路和时序逻辑电路。
组合逻辑电路的输出只与当前输入有关,而时序逻辑电路的输出不仅与当前输入有关,还与之前的输入有关。
三、实验内容1. 逻辑门实验(1)实验目的:熟悉逻辑门的功能和特性,掌握逻辑门的测试方法。
(2)实验步骤:① 将实验箱中的逻辑门连接到测试板上。
② 根据实验要求,将输入端分别连接高电平(+5V)和低电平(0V)。
③ 观察输出端的变化,记录实验数据。
④ 分析实验结果,验证逻辑门的功能。
2. 组合逻辑电路实验(1)实验目的:掌握组合逻辑电路的设计方法,熟悉常用组合逻辑电路。
(2)实验步骤:① 根据实验要求,设计组合逻辑电路。
② 将电路连接到实验箱中。
③ 根据输入端的不同组合,观察输出端的变化,记录实验数据。
④ 分析实验结果,验证电路的功能。
3. 时序逻辑电路实验(1)实验目的:掌握时序逻辑电路的设计方法,熟悉常用时序逻辑电路。
(2)实验步骤:① 根据实验要求,设计时序逻辑电路。
② 将电路连接到实验箱中。
③ 观察电路的输出变化,记录实验数据。
④ 分析实验结果,验证电路的功能。
四、实验结果与分析1. 逻辑门实验结果:通过实验,验证了逻辑门的功能和特性,掌握了逻辑门的测试方法。
2. 组合逻辑电路实验结果:通过实验,掌握了组合逻辑电路的设计方法,熟悉了常用组合逻辑电路。
3. 时序逻辑电路实验结果:通过实验,掌握了时序逻辑电路的设计方法,熟悉了常用时序逻辑电路。
数字逻辑实验报告一、引言数字逻辑实验是电子信息类专业的一门重要实践课程。
本实验报告旨在记录和总结我在数字逻辑实验中的学习和实践经验,分享我对数字逻辑的理解和应用。
二、实验概述本次数字逻辑实验的主题是设计一个简单的加法器电路。
实验目的是通过实践操作和设计,加深对数字逻辑电路的理解,并掌握逻辑门的使用和联接方式。
三、实验步骤1. 学习并熟悉逻辑门的基本原理和真值表。
2. 根据加法器的要求,确定所需的逻辑门类型和数量。
3. 使用逻辑门芯片进行电路设计和布线。
4. 连接电路连接线,确保电路的正常工作。
5. 使用示波器验证电路的正确性。
6. 总结实验过程中的问题和解决方法。
四、实验结果经过设计和调试,成功实现了一个4位全加器电路。
通过输入不同的二进制数值,成功实现了两个四位数的相加运算,并正确输出结果。
实验结果表明,逻辑门的正确使用和连接方式能够实现复杂的算术运算。
五、实验心得数字逻辑实验是一门非常实用的实践课程。
通过本次实验,我深刻理解了数字逻辑的基本原理和应用方法。
实验中,我了解了逻辑门的分类和功能,并学会了逐级联接逻辑芯片的技巧。
同时,实验还培养了我解决问题的能力和动手操作的实践技能。
在实验过程中,我遇到了一些问题,如逻辑门连接不正确、芯片损坏等。
但通过仔细检查和重新设计,最终找到了解决问题的方法。
这使得我更加珍惜实验中出现的错误和挑战,因为它们实际上是对我们思维和创造力的锻炼和考验。
通过本次实验,我还意识到数字逻辑的应用范围非常广泛。
数字逻辑不仅仅应用于电子电路中,还可以用于计算机设计、数字通信、自动控制等领域。
数字逻辑的深入学习对我们今后的专业发展非常重要。
总之,数字逻辑实验是一门非常有意义和实践性的课程。
通过实验,我不仅加深了对数字逻辑的理解,还培养了动手操作和解决问题的能力。
我相信通过持续的实践和学习,我将进一步提高数字逻辑的应用水平,为未来的专业发展打下坚实基础。
六、结语通过本次数字逻辑实验的学习和实践,我对数字逻辑有了更深的了解和认识。
华中科技大学计算机网络实验(二)报告————————————————————————————————作者:————————————————————————————————日期:ﻩ计算机网络课程实验报告实验2:抗干扰编码姓名李蓝鑫院系自动化学院学号U201514280实验地点科技楼十二楼机房实验时间2018年5月3日实验目的:1. 了解抗干扰编码原理。
2、掌握海明编码和CRC编码的原理,能熟练计算实验内容:内容1:海明编码1.1海明编码原理将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算进行校验,得出具体的校验码;在接收端同样通过异或运算看各组校验结果是否正确,并观察出错的校校组,或者个出错的校验组的共同校验位,得出具体的出错比特位;对错误位取反来将其纠正;假设用N表示添加了校验码位后整个传输信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位数,它们之间的关系应满足:N=K+r≤2^r-1(是为了确保r位校验码能校验全部的数据位,因为r位校验码所能表示的最大十进制数为2^r-1,同时也确保各位码本身不被其他校验码校验)。
海明码的校验码的位置必须是在2n次方位置(n从0开始,分别代表从左边数起分别是第1、2、4、8、16……),信息码也就是在非2n次方位置第i位校验码从当前校验码位开始,每次连续校验i位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。
确定每个校验码所校验的比特位:1.2海明编码程序流程图1.3交互界面设计编码:原码序列从“输入序列”编辑框输入,点击“编码”按钮在“编码序列”编辑框内输出编码序列,对输入编码要求为二进制输入译码:编码序列从“输入序列”编辑框输入,点击“译码”按钮在“译码序列”编辑框内输出译码序列,若译码错误会有响应的报错和纠错,对输入序列有不小于三位和二进制序列的要求1.4核心代码与注释输入序列框callback%做输入检测,检测是否是“0”“1”输入,否则报错temp_str=get(handles.input,'String');num_char=unique(temp_str);%unique函数获得输入字符串中不同字符的字符串if length(num_char)==2 %如果字符串长度为2if num_char(2)=='1' %第二个字符不是“1”说明字符串中有其他字符else set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelseif length(num_char)==1 %如果字符串长度为1,判断“1”还是“0",否则报错if num_char(1)=='0'elseif num_char(1)=='1'elseset(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelse %如果字符串长度不为2,直接报错set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');End编码按钮callback(编码核心)%获取输入字符串temp_str=get(handles.input,'string');%获取字符串长度len_str=length(temp_str);%转存原码字符串长度备用k=len_str;%初始化需要插入的校验码的位数r=0;%根据海明编码的2^(r)-1)<(k+r)要求,计算校验码位数while((2^(r)-1)<(k+r))r=r+1;end%把字符串数组转成0和1的数组,便于处理for i=1:1:len_strif temp_str(i)=='1'yuan(i)=1;%原码数组为yuanelseyuan(i)=0;endend%把求得相应位数的校验码,用0插入原码中得到新码j=0;m=1;for i=1:1:(k+r)if i==2^(j) %如果该位置为2的次方,则插入校验码xin(i)=0;j=j+1;elsexin(i)=yuan(m);m=m+1;endend%进行海明编码odd=0;%用于计算每位校验码负责校验的位置的和for j=1:1:r %共有r位校验码,需要计算r次n=1; %初始化循环变量i=1;while((n*2^(j-1)+i-1)<=(k+r))%当没有超过数组长度时继续循环if i>(2^(j-1)) %如果本段的编码已经加完i=1; %则调转到下一段,也就是隔一个2^(j-1)的段再进行累加n=n+2;else %累加odd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0 %判断是否为偶数xin(2^(j-1))=0; %若为偶数,则在对应的校验位插入0 elsexin(2^(j-1))=1; %若为奇数,则在对应的校验为插入1 endodd=0;end%编码完毕,把数组转换成字符串用于输出for i=1:1:(k+r)if xin(i)==1output_str(i)='1';elseoutput_str(i)='0';endendset(handles.out,'String',output_str);译码按钮callback(原理与编码基本相同)%获得译码序列字符串temp_str=get(handles.input,'string');len_str=length(temp_str);%判断输入序列长度是否满足要求,不满足报错返回if len_str<3errordlg('译码最低输入位数为3位','输入出错');elsek=len_str;%编码中信息码的个数r=len_str;%编码中校验码的个数while((2^(r)-1)>=len_str)r=r-1;endr=r+1;%找到校验码的个数k=len_str-r;for i=1:1:len_str%得到所有编码数组if temp_str(i)=='1'xin(i)=1;elsexin(i)=0;endend%提取出信息编码数组m=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endend%重新偶校验,原理同编码odd=0;for j=1:1:rn=1;i=1;while((n*2^(j-1)+i-1)<=(k+r))if i>(2^(j-1))i=1;n=n+2;elseodd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0check(j)=0; %校验结果存在check数组中elsecheck(j)=1;endodd=0;end%把check数组也就是校验结果转成十进制数num_wrong=0;for j=1:1:rnum_wrong=num_wrong*2;if check(r-j+1)==1num_wrong=num_wrong+1;endend%判断校验是否正确,为0则正确if num_wrong==0for m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);else%否则校验错误,对应位置取反后再输出if xin(num_wrong)==0xin(num_wrong)=1;elsexin(num_wrong)=0;endm=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endendfor m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);errordlg(['校验码第',num2str(num_wrong),' 位出错,对应位置取反后得到正确解码为',output_str],'校验出错');endend1.5程序执行测试1.5.1 编码测试①正常编码1.5.2 译码测试①输入报错②正常解码③解码错误与纠正内容2:CRC编码2.1 CRC编码原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。
华中科技大学计算机科学与技术双学位数字逻辑实验报告实验一组合逻辑电路的设计(第2-5页)实验二同步时许逻辑电路设计(第6-10页)实验三控制电路的设计(第10-12页)总结(第13页)学校:华中农业大学姓名:尹传林学号:2009301200906班级:植物科学技术学院植物保护专业0905班指导老师:熊自立完成时间:2011年4月4号到2011年4月23号实验一组合逻辑电路的设计一、实验目的1掌握组合逻辑电路的功能测试.2验证半加器和全加器的逻辑功能。
3学会二进制的运算规律。
二、实验器材74LS00 二输入四与非门 74LS04 六门反向器74LS08 二输入四与门 74LS10 三输入三与非门74LS86 二输入四异或门三、实验内容内容A 一位全加全减器的实现。
电路做加法还是做减法由S控制。
当s=0时做加法运算,s=1时做减法运算,当作为全加器输入信号A、B和Cin分别作为加数、被加数和低位来的进位,F1和F2为合数和向上位的进位。
当作为全减器输入信号A、B和Cin分别作为减数、被减数和低位来的借位,F1和F2为差数和向上位的借位。
内容B 舍入与检测电路的设计。
用所给定的集成电路组件设计一个多输出逻辑电路,输入为8421码.F1为四舍五入输入信号,F2为奇偶检测输出信号。
当输入的信号大于或等于(5)10时,电路输出F1=1,其他情况为0;当输入代码中含1的个数为奇数是,输出F2=1,其他情况为0.框图如图所示:四、实验步骤内容A 一位全加全减器的实现。
由要求可得如下真值表:F1的卡诺图为: F2的卡诺图为:化简得F1=A○+B○+C, F2=.由F1和F2表达式画出电路图如下:根据电路图,连接电路。
接线后拨动开关,结果如图:输入输出ABC 加法S=1 减法S=0F1 F2 F1 F20 0 0 0 0 0 00 0 1 1 0 1 10 1 0 1 0 1 10 1 1 0 1 0 11 0 0 1 0 1 01 0 1 0 1 0 01 1 0 0 1 0 01 1 1 1 1 1 1内容B 舍入与检测电路的设计。
数字逻辑实验报告数字逻辑实验报告引言数字逻辑是计算机科学中的重要基础知识,通过对数字信号的处理和转换,实现了计算机的高效运算和各种复杂功能。
本实验旨在通过实际操作,加深对数字逻辑电路的理解和应用。
实验一:二进制加法器设计与实现在这个实验中,我们需要设计一个二进制加法器,实现两个二进制数的加法运算。
通过对二进制数的逐位相加,我们可以得到正确的结果。
首先,我们需要将两个二进制数输入到加法器中,然后通过逻辑门的组合,实现逐位相加的操作。
最后,将得到的结果输出。
实验二:数字比较器的应用在这个实验中,我们将学习数字比较器的应用。
数字比较器可以比较两个数字的大小,并输出比较结果。
通过使用数字比较器,我们可以实现各种判断和选择的功能。
比如,在一个电子秤中,通过将待测物品的重量与设定的标准重量进行比较,可以判断物品是否符合要求。
实验三:多路选择器的设计与实现在这个实验中,我们需要设计一个多路选择器,实现多个输入信号中的一路信号的选择输出。
通过使用多路选择器,我们可以实现多种条件下的信号选择,从而实现复杂的逻辑控制。
比如,在一个多功能遥控器中,通过选择不同的按钮,可以控制不同的家电设备。
实验四:时序电路的设计与实现在这个实验中,我们将学习时序电路的设计与实现。
时序电路是数字逻辑电路中的一种重要类型,通过控制时钟信号的输入和输出,实现对数据的存储和处理。
比如,在计数器中,通过时序电路的设计,可以实现对数字的逐位计数和显示。
实验五:状态机的设计与实现在这个实验中,我们将学习状态机的设计与实现。
状态机是一种特殊的时序电路,通过对输入信号和当前状态的判断,实现对输出信号和下一个状态的控制。
状态机广泛应用于各种自动控制系统中,比如电梯控制系统、交通信号灯控制系统等。
实验六:逻辑门电路的优化与设计在这个实验中,我们将学习逻辑门电路的优化与设计。
通过对逻辑门电路的布局和连接方式进行优化,可以减少电路的复杂性和功耗,提高电路的性能和可靠性。
数字逻辑实验报告(2)数字逻辑实验2多功能电子钟系统设计成绩评语:(包含:预习报告内容、实验过程、实验结果及分析)教师签名姓名:学号:班级:物联网1701指导教师:徐有青计算机科学与技术学院20 年月日数字逻辑实验报告多功能电子钟系统设计实验报告多功能电子钟系统设计1、实验名称多功能电子钟系统设计。
2、实验目的要求同学采用传统电路的设计方法,对一个“设计场景”进行逻辑电路的设计,并利用工具软件,例如,“logisim”软件的虚拟仿真来验证电子钟电路系统的设计是否达到要求。
通过以上实验的设计、仿真、验证3个训练过程使同学们掌握小型电路系统的设计、仿真、调试方法以及电路模块封装的方法。
3、实验所用设备软件一套。
4、实验内容设计场景:多功能数字钟是一种用数字显示秒、分、时的计时装置,当前从小到人们日常生活中的电子手表,大到车站、码头、机场等公共场所的大型数显电子钟无处不在。
多功能数字钟的基本功能如下:(1)显示时、分、秒;(2)可以采用24小时制或12小时制(上午和下午);(3)整点报时,整点前10秒开始,整点时结束;(4)单独对“时、分”计时校准,对分钟值校准时最大分钟值不向小时值进位;(5)闹钟10秒提醒。
使用logisim软件对你设计电子钟电路进行虚拟仿真验证,具体要求如下。
(采用logisim软件提供的“时钟频率”为8hz的信号源)(1)具有校准计数值功能的六十进制计数器电路采用“四位二进制可逆计数器”这个“私有”元件和相应元器件,设计一个具有对计数值进行校准的六十进制计数器,并封装,该计数器逻辑符号参见图2-1所示。
图2-1 校准计数值的60进制计数器六十进制计数器的输入输出引脚定义如下:(a)一个清零端Clr;(b)一个累加计数脉冲输入端CP U;(c)一个累减计数脉冲输入端CP D;(d)八个计数器状态输出值Q1D Q1C Q1B Q1A Q0D Q0C Q0B Q0A,采用8421码分别表示计数器状态的十位和个位;(e)一个计数值校准输入控制信号Adj,当Adj为“1”时通过CP U对计数值进行加计数或校准,Adj为“0”时通过CP D对计数值进行减计数校准(由于受“四位二进制可逆计数器”约束),CP D可以对计数值的十位或个位进行递减校准(递减的时候不需要循环,回到0即可);(f)每当计数累计满60产生一个进位输出信号Qcc。
一、实验目的本次实验旨在通过实际操作,加深对数字逻辑基本原理和设计方法的理解,提高学生在数字电路设计、仿真和调试方面的实践能力。
通过完成以下实验任务,使学生掌握以下技能:1. 理解数字逻辑电路的基本概念和原理。
2. 掌握数字逻辑电路的设计方法和步骤。
3. 学会使用仿真软件进行电路设计和仿真测试。
4. 掌握数字逻辑电路的调试和优化方法。
二、实验内容本次实验主要包含以下三个部分:1. 组合逻辑电路设计:设计一个四位加法器,并使用Logisim软件进行仿真测试。
2. 时序逻辑电路设计:设计一个简单的计数器,并使用Verilog语言进行描述和仿真。
3. 数字逻辑电路综合应用:设计一个简单的数字信号处理器,实现基本的算术运算。
三、实验步骤1. 组合逻辑电路设计(1)分析题目要求,确定设计目标和输入输出关系。
(2)根据输入输出关系,设计四位加法器的逻辑电路。
(3)使用Logisim软件搭建电路,并设置输入信号。
(4)观察仿真结果,验证电路功能是否正确。
2. 时序逻辑电路设计(1)分析题目要求,确定设计目标和状态转移图。
(2)使用Verilog语言描述计数器电路,包括模块定义、输入输出定义、状态定义和状态转移逻辑。
(3)使用仿真软件进行测试,观察电路在不同状态下的输出波形。
3. 数字逻辑电路综合应用(1)分析题目要求,确定设计目标和功能模块。
(2)设计数字信号处理器电路,包括算术运算单元、控制单元和存储单元等。
(3)使用仿真软件进行测试,验证电路能否实现基本算术运算。
四、实验结果与分析1. 组合逻辑电路设计实验结果:通过仿真测试,四位加法器电路功能正常,能够实现两个四位二进制数的加法运算。
分析:在设计过程中,遵循了组合逻辑电路设计的基本原则,确保了电路的正确性。
2. 时序逻辑电路设计实验结果:通过仿真测试,计数器电路功能正常,能够实现从0到9的计数功能。
分析:在设计过程中,正确描述了状态转移图,并使用Verilog语言实现了电路的功能。
数字逻辑实验报告肇庆学院计算机学院软件学院数字逻辑实验报告专业班级学号学生姓名指导教师连晋平完成时间目录实验一基本门电路实验 (1)1.1预习内容 (1)1.2目的要求 (1)1.3实验仪器及材料 (1)1.4实验内容 (1)1.5实验体会及问题解答 (3)实验二组合逻辑电路实验 (3)2.1预习内容 (3)2.2目的要求 (4)2.3实验仪器及材料 (4)2.4实验内容 (4)2.5实验体会及问题解答 (5)实验三基本RS触发器和D触发器 (5) 3.1预习内容 (5)3.2目的要求 (5)3.3实验仪器及材料 (5)3.4实验内容 (6)3.5实验体会及问题解答 (6)实验四计数器及其应用 (7)4.1预习内容 (7)4.2目的要求 (7)4.3实验仪器及材料 (7)4.4实验内容 (7)4.5实验体会及问题解答 (9)实验一基本门电路实验1.1预习内容1.复习门电路工作原理及相应逻辑表达式2.熟悉所用集成电路的引线位置及各引线用途1.2目的要求1.熟悉门电路逻辑功能2.熟悉数字电路教学实验系统板1.3实验仪器及材料1.数字电路教学实验系统板2.器件74LS00 二输入端四与非门 1 片74LS32 二输入端四或门 1 片74LS86 二输入端四异或门 1 片3.导线若干1.4实验内容实验前按数字电路教学实验系统板使用说明先检查实验系统板电源是否正常。
然后选择实验用的集成电路,按自己设计的实验接线图接好连线,特别注意Vcc及地线不能接错。
线接好后经实验指导教师检查无误方可通电实验。
1.测试或门电路的逻辑功能(1).选用二输入端四或门74LS32一只,插入面包板,按图1.1接线,输入端接D1、D2(电平开关输入插口),输出端接电平显示发光二极管L1。
(2).将电平开关按表1.1置位,分别测出电压及逻辑状态。
(3).将表中结果和“或门”的真值表对比,判断是否实现了“或”逻辑功能。
2.异或门逻辑功能测试(1).选二输入四异或门电路74LS86一只,插入面包板,按图1.2接线,输入端接D1、D2(电平开关输入插口),输出端接电平显示发光二极管L1。
数字逻辑实验报告(2)数字逻辑实验2一、无符号数的乘法器设计50% 二、无符号数的除法器设计50% 总成绩姓 名: 学 号: 班 级: 指 导 教 师:计算机科学与技术学院 20 年 月 日评语:(包含:预习报告内容、实验过程、实验结果及分析)教师签名数字逻辑实验报告(2)无符号数的乘法器设计一、无符号数的乘法器设计1、实验名称无符号数的乘法器的设计。
2、实验目的要求使用合适的逻辑电路的设计方法,通过工具软件logisim进行无符号数的乘法器的设计和验证,记录实验结果,验证设计是否达到要求。
通过无符号数的乘法器的设计、仿真、验证3个训练过程,使同学们掌握数字逻辑电路的设计、仿真、调试的方法。
3、实验所用设备软件一套。
4、实验内容(1)四位乘法器设计四位乘法器Mul44实现两个无符号的4位二进制数的乘法运算,其结构框图如图3-1所示。
设被乘数为b(3:0),乘数为a(3:0),乘积需要8位二进制数表示,乘积为p(7:0)。
图3-1 四位乘法器结构框图四位乘法器运算可以用4个相同的模块串接而成,其内部结构如图3-2所示。
每个模块均包含一个加法器、一个2选1多路选择器和一个移位器shl。
图3-2中数据通路上的数据位宽都为8,确保两个4位二进制数的乘积不会发生溢出。
shl是左移一位的操作,在这里可以不用逻辑器件来实现,而仅通过数据连线的改变(两个分线器错位相连接)就可实现。
a(0)a(1)a(2)a(3)图3-2 四位乘法器内部结构(2)324乘法器设计324乘法器Mul324实现一个无符号的32位二进制数和一个无符号的4位二进制数的乘法运算,其结构框图如图3-3所示。
设被乘数为b(31:0),乘数为a(3:0),乘积也用32位二进制数表示,乘积为p(31:0)。
这里,要求乘积p能用32位二进制数表示,且不会发生溢出。
图3-3 324乘法器结构框图在四位乘法器Mul44上进行改进,将数据通路上的数据位宽都改为32位,即可实现Mul324。
(3)3232乘法器设计3232乘法器Mul3232实现两个无符号的32位二进制数的乘法运算,其结构框图如图3-4所示。
设被乘数为b(31:0),乘数为a(31:0),乘积也用32位二进制数表示,乘积为p(31:0)。
这里,要求乘积p能用32位二进制数表示,且不会发生溢出。
图3-4 3232乘法器结构框图用324乘法器Mul324作为基本部件,实现3232乘法器Mul3232。
设被乘数为b(31:0)=(b31b30b29b28···b15b14b13b12···b4b3b2b1b0)2乘数为a(31:0)=(a31a30a29a28···a15a14a13a12···a3a2a1a0)2=(a31a30a29a28)2228+···+ ( a15a14a13a12)2212+···+ (a3a2a1a0)220所以,p(31:0)= b(31:0) a(31:0)= b(31:0) ((a31a30a29a28)2228+···+ ( a15a14a13a12)2212+···+ (a3a2a1a0)220)= b(31:0) (a31a30a29a28)2228 +···+ b(31:0) ( a15a14a13a12)2212 +···+ b(31:0) (a3a2a1a0)220从上述推导可知,Mul3232可以用8个Mul324分组相乘,然后通过4的倍数位的左移(相当于乘2i),再将左移结果两两相加得到。
5、实验设计方案(1)四位乘法器设计1)mul4*4的乘法公式为图3-5 4x4的乘法公式所以其设计思路为:假设b为被乘数,a为乘数,则通过a作为数据选择端,若a为0,则取之前一位的运算结果作为本位的值;如果a为1,b左移1位(并将移位后的b作为下一位运算的b值),将前一位的运算结果加上b左移1位后的结果的和作为本位的值。
2)其电路图如图3-6所示:图3-6 4x4乘法器电路(2)324乘法器设计其基本算法与4*4的乘法器基本相当,只是此时被乘数b变为32位,因而需要将数据位宽变为32位,同样采用移位并且使用数据选择器。
其电路图如图3-7所示:图3-7 32x4乘法器(3)3232乘法器设计mul32*32乘法器的设计思路为:使用之前封装的32*4的乘法器,将乘数a分为8个4位二进制数,分设为p1,p2,p3,p4,p5,p6,p7,p8。
然后分别将pi左移4*(i-1)位,(该结果可以通过移位器分线出来4位)得到的数再分别两两相加,再两两相加,最后加在一起,得到的结果即为两数相乘的结果p。
图3-8 32x32乘法器6、实验结果记录根据实验方案设计要求,对于相应的乘法器和除法器,在给定的输入条件下,填写表3-1。
电路输入1(16进制)输入2(16进制)输出(16进制)Mul44b=0A a=0A p=064Mul44b=0E a=09p=07EMul324b=0003ABEF1a=0A p=024B756A Mul324b=0019ABEF1a=07p=0 B3B3897 Mul3232b=00002BEF1a=000004EF1p=0D8C32EE1 Mul3232b=000003EF1a=00003BEF1p=0EBC51EE1图3-9图3-10图3-11图3-12图3-13图3-14数字逻辑实验报告(3)无符号数的除法器设计二、无符号数的除法器设计1、实验名称无符号数的除法器的设计。
2、实验目的要求使用合适的逻辑电路的设计方法,通过工具软件logisim进行无符号数的除法器的设计和验证,记录实验结果,验证设计是否达到要求。
通过无符号数的除法器的设计、仿真、验证3个训练过程,使同学们掌握数字逻辑电路的设计、仿真、调试的方法。
3、实验所用设备软件一套。
4、实验内容(1)四位除法器设计四位除法器实现两个无符号的4位二进制数的除法运算,其结构框图如图2-1所示。
设被除数为n2(3:0),除数为d(3:0),商为quot(3:0),余数为rem(3:0)。
2-1 四位除法器结构框图四位除法器Div4算法步骤如下:(1)设n1="0000",将被除数以n1:n2 的形式拼接,除数为d;(2)重复4次:将n1:n2左移1位;if (n 1>d) begin n 1= n 1-d; n 2 (0)=1 end(3) 商和余数的结果为:quot= n 2 ;rem= n 1 。
四位除法器也可以用4个相同的模块串接而成。
每个模块均包含一个减法器、两个2选1多路选择器、一个比较器和一个移位器shl 。
请参照四位乘法器的设计思路,实现两个无符号的4位二进制数的除法器。
(2)32位除法器设计32位除法器Div32实现两个无符号的32位二进制数的除法运算,其结构框图如图2-2所示。
设被除数为n(31:0),除数为d(31:0),商为quot(31:0),余数为rem(31:0)。
2-2 32位除法器结构框图对四位除法器Div4中4个相同的模块之一进行改进,将数据通路上的数据位宽都扩展为32位,得到一个Div1。
将32个Div1拼接起来即可实现Div32。
5、实验设计方案(1)四位除法器设计(1)除法器Div4的内部逻辑结构框图如图3-1所示图3-1 除法器div4的内部逻辑结构框图(2)其电路图如图3-2所示Div32n(31:0)d(31:0)quot(31:0)rem(31:0)图3-2 除法器div4的电路图(2)32位除法器Div32设计(1)首先,先连接一个一次32div32的除法器,即已知当前的余数和当前的商,推算出下一位的余数和下一位的商。
将该子电路命名为32div_1 32div_1子电路的设计思路如下:1. 32div_1有d、cur_quot、cur_rem三个输入端,有next_quot,next_rem两个输出端。
2. 将当前余数左移一位,余数的最低为补商的最高位3. 商左移一位,最低位补0还是1根据以下步骤判断:将移位后的余数与除数d比较,d>rem时,商的最低位应该补0;否则,商的最低位应该补1。
将商输出,即为next_quot。
4. d>rem时,余数仍为移位后的余数;否则,余数rem = rem-d。
将rem输出,即为next_rem。
将该操作重复32次,即将32个已经封装好的32div_1相连,则产生的即为32div32除法器。
(2)其电路图分别如下所示:图3-3为32div_1的除法器的内部图:图3-3 32div_1除法器的内部原理图图3-4为32div32的除法器图:图3-4 32div32除法器内部原理图6、实验结果记录根据实验方案设计要求,对于相应的乘法器和除法器,在给定的输入条件下,填写表2-1。
表2-1 无符号数的乘法器实验结果记录表电路输入1(16进制)输入2(16进制)输出(16进制)Div4n2=0E d=09quot=0F rem=07Div4n2=0E d=00quot=0E rem=0EDiv32n=0019ABEF1d=000004EF1quot=0534rem=0 fdDiv32n=0A0504EF1d=0019ABEF1quot=063rem=017877be图3-5图3-6图3-7图3-87、实验中遇到的问题及解决方法(1)故障1问题描述:在设计4位除法器时比较器出现了问题,当被除数位1110,除数为1100时出现了错误的输出。
后来发现原来是因为比较器的数据类型是关于2的补码,在一些情况下会输出错误的结果。
问题分析:比较器的数据类型是关于2的补码,所以在比较的时候不会按照无符号数来进行比较。
解决方法:将比较器的数字类型改为无符号数。
(2)故障2问题描述:在设计32位除法器时电路显示出现明显振荡,所以会输出错误的结果。
问题分析:由于32位除法器电路不稳定所以会引起振荡。
解决方法:在电路的输入和输出处添加一个探测器。
8、思考题(1)乘法器/除法器中的延时主要取决于加法器/减法器的延时,其它组件延时可忽略不计。
假设每个加法器/减法器的延时都为Δt,你所设计的乘法器Mul44、Mul324、Mul3232、除法器Div4、Div32的延时各是多少它们是组合逻辑电路、同步时序逻辑电路还是异步时序逻辑电路乘法器Mul44的延时为4Δt;Mul324的延时为4Δt;Mul3232的延时为39Δt;除法器Div4的延时为4Δt;Div32的延时为32Δt。