ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:369.45KB ,
资源ID:8631982      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8631982.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字电路实验报告DOC.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字电路实验报告DOC.docx

1、数字电路实验报告DOC实验一 四位海明校验码的逻辑设计 2实验二 十六进制译码计数器的设计 6实验三 脉冲分频逻辑电路的设计 10实验四 八位数据串入并出逻辑设计 16实验五 十六位运算器的逻辑设计 20实验六 4Kx8bit存储器的设计 25实验一 四位海明校验码的逻辑设计实验目的:掌握海明校验的编码原理以及设计、调试方法,巩固提高组合逻辑知识,培养实际动手能力。掌握总线的应用方法。掌握总线信息出错时发现错我和纠正错我的原理,掌握奇偶校验的原理,掌握海明校验编码原理以及设计、调试方法。实验要求:(1) 设计信息位为 4位的内存的海明校验逻辑电路,在读内存储器时,具有一位出 错报错和纠正一位错

2、误的功能。(2) 为了难其正确性,在读出信息的通路上,要串入造错用逻辑,位数自定。(3) 奇偶发生器与海明校难器对同一位用一块奇偶校验集成块实验原理: 检错和校错 由编码理论,任何一种编码是否具有检测和纠错能力,都与编码的最小距离有关,即任何两组合法代码间最少的二进制位数的差异,L-1=D+C(D=C)L为编码的最小距离,D表示检测错误的位数;C表示纠正错误的位数。故,8421码不具备检错能力,这是因为它的最小码距为1,当8421码的码字中有一位出错,而产生的错误代码就有可能是另一个码字,这样,无法判断它是否已出错。 8421海明校验码8421海明校验码由8421码加三位校验码组成.设8421

3、码为I1 I2 I3 I4,三位校验码为:P3 P2 P1,则8421码为下列七位代码:位序76543218421海明码I4I3I2P3I1P2P1校验码的值由下式确定: 由此可得8421海明码的最小码距为3 ,故D=1,C=1,可检测并纠正一位错误。输出时在输出端先求出校验和: 然后判断S3S2S1,如果代码不出错,则S3S2S1=000,否则由S3S2S1构成的二进制数为1位指出出错位。实验实现:1.利用Quartus II 工具,画出实验的TTl电路如下图经过编译仿真之后,仿真波形图如下图:如图看见,当造错数据只与原数据有一位错(1000,0100,0010,0001)时,输出的数据和输

4、入的数据是一样的,通过海明码将错误的一位数据进行了修正。而当没有数位错的时候,yes输出的值变为1,表明在传输过程中,数据位并没有出错。2.海明校验码的verilog实现Verilog代码如下module haiming( num , mistake , out );input 3:0 num;input 3:0 mistake;output 3:0 out;wire 2:0 hmnum;wire 2:0 ckhmnum;wire 3:0 misnum;wire 3:0 erbit;assign hmnum0 = num3num1num0, hmnum1 = num3num2num0, hmn

5、um2 = num3num2num1;assign ckhmnum0 = misnum3misnum1misnum0hmnum0, ckhmnum1 = misnum3misnum2misnum0hmnum1, ckhmnum2 = misnum3misnum2misnum1hmnum2;assign misnum0 = num0mistake0, misnum1 = num1mistake1, misnum2 = num2mistake2, misnum3 = num3mistake3;assign erbit0 = (ckhmnum2)&ckhmnum1&ckhmnum0, erbit1

6、= ckhmnum2&(ckhmnum1)&ckhmnum0, erbit2 = ckhmnum2&ckhmnum1&(ckhmnum0), erbit3 = ckhmnum2&ckhmnum1&ckhmnum0; assign out = erbit misnum;endmodule这段代码,我用的assign语句,对wire类型进行赋值,因为在TTL电路之中并没有用到寄存器,而且这是一个典型的组合逻辑电路,所以并没有只用reg寄存器类型的变量。其中的每一个赋值都和上述的TTL电路相对应。其中num为输入的数据,mistake为造错的输入,hmnum为由输入数据所得到的的海明码,misnum

7、为造错之后线路上的值,ckhmnum为根据海明码和数据生成的用于纠错的海明码,而erbit为根据ckhmnum所得到的哪一位错误的信息,最后根据这信息将错误的位进行改正。下面是根据verilog编译仿真后的波形图如图,当造错数据只与原数据有一位错(1000,0100,0010,0001)时,输出的数据和输入的数据是一样的,通过海明码将错误的一位数据进行了修正。没有错误的时候(0000),输出数据和输入数据也是一样的。实验小结:这个实验让我熟悉了本实验所用的软件的使用方法,如何利用quartus软件,画电路图,并且编译仿真,以及利用verilog HDL编写简单的组合逻辑电路,以及利用quart

8、us软件对编写的verilog程序进行编译,仿真,以及基本的数字电路设计调试方法,本实验让我受益匪浅。实验二 十六进制译码计数器的设计实验目的: 1.掌握设计组合逻辑电路的方法 2.不同器件,不同设计方法的比较 3掌握数码显示与译码器电位间的关系,掌握小规模可编程芯片的应用,掌握GAL方程的设计实验要求: 用GAL 方程设计方法进行实验,并用MAX+PLUAS进行原理图形设计并仿真验证实验器件: 计算机及相关软件,实验教学板,GAL16V8芯片,插线等实验原理: G f VCC a b1 2 3 4 5afabcdefgabcdefg A bch. deeeg6 7 8 9 10 10 h h

9、 h e d VCC c h 七段发光二极管管脚说明 共阴型 共阳型由七段管的管脚图可以列出真值表输入信号七段数码管管脚信号ABCD数码abcdefg0000011111100001101100000010211011010011311110010100401100110101510110110110610111110111711100001000811111111001911110111010A11101111011B00111111100C00011011101D01111011110E10011111111F1000111由上述真值表可以得到表达式 a = (A&B&C&D|A&B&C&

10、D|A&B&C&D|A&B&C&D|A&B&C&D) b = (A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D) c = (A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D) d = (A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D) e = (A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D) f = (A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D|A&B&C&D) g = (A&B&C&D|A&B&C&D|A&B&C&

11、D)由此表达式即可得到对应的数码显示实现方法:(1)GAL芯片 PLD16V8 BASIC DECODE CYB 2013.10.20 SHIYAN USTC V1.0 A B C D NC NC NC NC NC GND NC NC g0 f0 e0 d0 c0 b0 a0 VCC /a0 = /A*/B*/C*D+/A*B*/C*/D+A*/B*C*D+A*B*/C*/D+A*B*/C*D /b0 = /A*B*/C*D+/A*B*C*/D+A*/B*C*D+A*B*/C*/D+A*B*C*/D+A*B*C*D /c0 = /A*/B*C*/D+A*B*/C*/D+A*B*C*/D+A*B

12、*C*D /d0 = /A*/B*/C*D+/A*B*/C*/D+/A*B*C*D+A*/B*C*/D+A*B*C*D /e0 = /A*/B*/C*D+/A*/B*C*D+/A*B*/C*/D+/A*B*/C*D+/A*B*C*D+A*/B*/C*D /f0 = /A*/B*/C*D+/A*/B*C*/D+/A*/B*C*D+/A*B*C*D+A*B*/C*/D+A*B*/C*D /g0 = /A*/B*/C*/D+/A*/B*/C*D+/A*B*C*D DESCRIPTIONPs:具体的效果在实验的那一天已经由助教检查通过。(2)利用verilog进行描述module yima(clk ,

13、 out , count);input clk;output reg 6:0 out;output reg 3:0 count;always (posedge clk)begin count = count + 1;endalways(count) case(count) 4d0: out = 7b1000000; 4d1: out = 7b1111001; 4d2: out = 7b0100100; 4d3: out = 7b0110000; 4d4: out = 7b0011001; 4d5: out = 7b0010010; 4d6: out = 7b0000010; 4d7: out

14、= 7b1111000; 4d8: out = 7b0000000; 4d9: out = 7b0010000; 4d10:out = 7b0001000; 4d11:out = 7b0000011; 4d12:out = 7b1000110; 4d13:out = 7b0100001; 4d14:out = 7b0000110; 4d15:out = 7b0001110; default: out = 8b110000000; endcase endmodule这个verilog描述其实是将计数和译码部分写到了一起,第一个always块的作用就是计数,每当一个时钟上升沿来临的时候,就将cou

15、nt加1,,而第二个always块的作用则是译码操作,即是一个显示译码器,将count的4为二进制码译成控制数码管的7位二进制码。注意数码管是低电平有效的。Ps:实验室所用的板子自带显示译码的功能,所以译码的always快可以去掉,具体的开发板实现已经给老师验收。下面是编译仿真之后的波形图分析仿真结果,计数器随着时钟而不断加1,out为控制7段数码管的7位二进制数。实验小结:本次试验利用GAL芯片进行编程,让我接触了一下小规模的逻辑电路的设计实现方法,而且这也是我们第一次接触到现实中的芯片去完成一个计数显示的功能,十分有意思。而且这个实验在让我们熟悉了利用卡诺图进行化简以及时序逻辑电路的基本设

16、计方法。实验三 脉冲分频逻辑电路的设计实验目的:掌握同步时序电路和分频,延迟整形的原理和设计方法, 进一步提高实践能力。 实现下图的分频整形设计实验原理:可参考下图原理图延迟整形电路整形电路 L17 L15 L16 CP1 CP2 CP3 CP4 CP5 CP6 L9 L10 L11 L12 L13 L14 CP L1 L2 L3 L4 L5 L6 L7 L8 CLK 10MHZ 时序脉冲分频,分配,延迟与整形框图 (Ln = 灯n)首先要实现一个5分频。即一个五周期的循环。可以通过3个D触发器来实现该功能。五周期真值表如下: Q1Q2Q3000100010110001 输出Q3。则利用时序逻

17、辑电路的设计方法,通过卡诺图化简得到方程: Q1n = Q1n-1 & Q3n-1 Q2n = Q1n-1 Q2n-1 Q3n = Q1n-1 & Q2n-1四分频或二分频可直接通过计数器得到。实现一个移位型三周期计数器,利用D触发器设计。真值表如下起始Q1Q2Q3 = 000Q1Q2Q3100010001分别输出三个结果。同样的,利用时序逻辑电路的设计方法,化简得到方程: Q1n = Q1n-1 & Q2n-1 Q2n = Q1n Q3n = Q2n而最后CP1CP6课通过上面得到的不同周期的分频,通过一个组合逻辑得到,观察图像,得到方程: cp1 = q4b & q5 & q6, cp2

18、= q4b & q5 & q6, cp3 = q4b & q5 & q7, cp4 = q4b & q5 & q7, cp5 = q4b & q5 & q8, cp6 = q4b & q5 & q8;实验实现:1.利用Quartus II 工具,画出实验的TTl电路如下图经过编译仿真之后,仿真波形图如下图:如上图所见,仿真之后的波形图和我们的目的的波形图除了排版之外,并没有不同。本实验的TTL电路是一个异步逻辑电路,并不是所有的时钟都接在同一个时钟的上面,其实这样的做法是有一定的坏处的,在同步性方面会有一定的欠缺,但是当时做实验的时候对这方面的了解并不多,所以采用的异步的方式来实现的电路2.利

19、用verilog进行描述module fenpin(clk , q3 , q4 , q4b , q5 , q6 , q7 , q8 ,cp);input clk;output reg q3,q4,q4b,q5,q6,q7,q8;output wire 6:1 cp;integer i,j;always (posedge clk)begin if(i = 3) q3 = 1; if(i = 4) begin q3 = 0; i = 0; end i = i+1;endalways (posedge q3)begin q4 = q4; q4b = q4;endalways (posedge q4)

20、begin q5 = q5;endalways (posedge q5)begin j = j+1; case(j) 1: begin q6 = 1;q7 = 0;q8 = 0; end 2: begin q6 = 0;q7 = 1;q8 = 0; end 3: begin q6 = 0;q7 = 0;q8 = 1;j=0; end default j = 0; endcaseendassign cp1 = q4b & q5 & q6, cp2 = q4b & q5 & q6, cp3 = q4b & q5 & q7, cp4 = q4b & q5 & q7, cp5 = q4b & q5 &

21、 q8, cp6 = q4b & q5 & q8;endmodule下面是根据verilog编译仿真后的波形图分析仿真波形图可见,与我们所期望的波形图相同。同上,使用verilog的时候,采用的是异步逻辑电路。实验小结:本实验是第一次对时序逻辑电路的设计实验,进行的是一个简单的分频的实验,这个实验利用到了手动设计5分频,和利用计数器实现分频,以及移位计数的设计。通过本次试验,我们对时序逻辑电路有了更加深刻的认识,而且在实验的过程之中我们会遇到一些问题,比如有一些毛刺,通过不断地调试消除毛刺的过程,我们对时序逻辑电路延迟的问题有了更深刻的认识,而且对如何对它进行调试也有了一个基础的概念。通过编写

22、这个实验的verilog,我们知道了如何利用verilog实现时序逻辑电路。实验四 八位数据串入并出逻辑设计实验目的: 从一个八位起始码开始,串行读入数据,每读入八位一次性并行输出,读到八位终止码结束。进一步掌握同步时序电路及其在计算机中的应用,提高灵活应用,以及分析、设计、调试能力。实验原理: 这次实验中的描述语言的起始码为01100110,终止码为10011001。 原理图的起始码为10011001,终止码为01100110. 原理图设计时,输入接入74164移位寄存器,每个时钟节拍将读入一位数据并将之前读到的数据进行移位,那么74164输出即为当前并行的八位数据,将该八位数判断,当满足触

23、发起始条件时,将触发jk触发器,启动计数器74161,产生一个八倍与时钟的周期,连接至74273片,每次计数器时钟一个节拍输出一次,相当于每八位串行数据输出一次。当读入终止码时,触发jk触发器,关闭计数器,即不在触发74273输出。 描述语言设计时则相对简单,我们采用一个八位寄存器来保存输入数据,当读到起始码时进行判断,并将判断寄存器置1,计数寄存器置0并开始计数,每计数八次将寄存器中的存值输出。读到终止码时,将判断寄存器置0,不再输出。实验实现:1.利用Quartus II 工具,画出实验的TTl电路如下图经过编译仿真之后,仿真波形图如下图:分析波形图可知,当输入依次为10011001时,开

24、始计数,然后再8个周期之后,即下一个八位数据进入之时,将此时输入的8位数据并行输出。由图像可知,将后面的两个8位数据依次输出,没有出现错误,当依次输入01100110的时候,停止并行输出,并且输出为零。2. verilog实现module crbc(numin,numout,clk);input numin,clk;output reg 7:0 numout;reg 7:0 num;reg 3:0 j;reg state;always (posedge clk)begin num = (num 1) + numin; if(num = 8b01100110) begin state = 1;

25、j = 0 ; end if(num = 8b10011001) begin state = 0; numout = 0; j = 0 ; end if(j = 8 & state =1) begin numout = num; j = 0; end j = j+1;endendmodule代码就是比较简单的verilog代码,每一次输入一个数据,就将8位的寄存器左移一位,然后加上新输入的一位,检测是否符合开启并行输出的条件,然后计数8个周期,输出输入的串行数据。编译仿真之后的波形图同上面TTL电路图的波形图,当输入为01100110的时候,开启并行输出,开始计数,8个周期之后输出串行数据,连

26、续并行输出两个8位串行数据并没有出现错误。实验小结: 本实验是设计8位串入并出,实验并不困难,但是加深了我们对时序逻辑电路的理解,以及数据在计算机中传播的认识。 实验五 十六位运算器的逻辑设计实验目的:1掌握算术了逻辑部件74181和提前进位发生器74182等集成块的结构原理和应用。2熟悉运算器基本组成的控制方法,以及不同的结构进位速度情况。实验内容:1.用74181,74182等集成块和数字逻辑实验仪组成16位可控运算器。2. 控制不同运算方式,并列表记录运算结果3. 设计一个选择,分别利用超前进位和不利用超前进位进行加法运算,并比较所用时间的差。实验原理: ALU功能表,74181 串行计

27、算:直接使用74181,将进位串联起来就可以 并行计算:加上74182超前进位。超前进位推导4位之间采用先行进位公式,每一位的进位公式可递推如下:第0位向第1位的进位公式为 Cn1Y0X0Cn 其中Cn是向第0位(末位)的进位。第1位向第2位的进位公式为 Cn2Y1X1Cn1Y1Y0X1X0X1Cn 第2位向第3位的进位公式为 Cn3Y2X2Cn2Y2Y1X1Y0X1X2X0X1X2Cn 第3位的进位输出(即整个4位运算进位输出)公式为 Cn4Y3X3Cn3Y3Y2X3Y1X2X3Y0X1X2X3X0X1X2X3Cn 利用四片74181构成16位的ALU,然后利用74182实现超前进位,并且利用数据选择器74157进行超前进位与非超前进位间的选择。实验实现:1.利用Quartus II 工具,画出实验的TTl电路如下图经过编译仿真之后,仿真波形图如下图:如图,输入a和b分别为16进制的1234和2222是,sel从0开始计数,则输出如下,与实验时老师给我们的标准相同。2.利用verilog进行描述Verilog只描述

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1