数字电路实验报告
数字电路设计实训实验报告

一、实验目的1. 熟悉数字电路的基本组成和基本逻辑门电路的功能。
2. 掌握组合逻辑电路的设计方法,包括逻辑表达式化简、逻辑电路设计等。
3. 提高动手实践能力,培养独立思考和解决问题的能力。
4. 理解数字电路在实际应用中的重要性。
二、实验原理数字电路是一种用数字信号表示和处理信息的电路,其基本组成单元是逻辑门电路。
逻辑门电路有与门、或门、非门、异或门等,它们通过输入信号的逻辑运算,输出相应的逻辑结果。
组合逻辑电路是由逻辑门电路组成的,其输出仅与当前输入信号有关,与电路的过去状态无关。
本实验将设计一个简单的组合逻辑电路,实现特定功能。
三、实验仪器与设备1. 数字电路实验箱2. 逻辑门电路(如与非门、或非门、异或门等)3. 逻辑电平测试仪4. 线路板5. 电源四、实验内容1. 组合逻辑电路设计(1)设计一个三人表决电路三人表决电路的输入信号为三个人的投票结果,输出信号为最终的表决结果。
根据题意,当至少有两人的投票结果相同时,输出为“通过”;否则,输出为“不通过”。
(2)设计一个4选1数据选择器4选1数据选择器有4个数据输入端、2个选择输入端和1个输出端。
根据选择输入端的不同,将4个数据输入端中的一个输出到输出端。
2. 组合逻辑电路搭建与测试(1)搭建三人表决电路根据电路设计,将三个与门、一个或门和一个异或门连接起来,构成三人表决电路。
(2)搭建4选1数据选择器根据电路设计,将四个或非门、一个与非门和一个与门连接起来,构成4选1数据选择器。
(3)测试电路使用逻辑电平测试仪,测试搭建好的电路在不同输入信号下的输出结果,验证电路的正确性。
3. 实验结果与分析(1)三人表决电路测试结果当输入信号为(1,0,0)、(0,1,0)、(0,0,1)时,输出为“通过”;当输入信号为(1,1,0)、(0,1,1)、(1,0,1)时,输出为“不通过”。
测试结果符合设计要求。
(2)4选1数据选择器测试结果当选择输入端为(0,0)时,输出为输入端A的信号;当选择输入端为(0,1)时,输出为输入端B的信号;当选择输入端为(1,0)时,输出为输入端C的信号;当选择输入端为(1,1)时,输出为输入端D的信号。
《数字电路》实验报告

《数字电路》实验报告项目一逻辑状态测试笔的制作一、项目描述本项目制作的逻辑状态测试笔,由集成门电路芯片74HC00、发光二极管、电阻等元器件组成,项目相关知识点有:基本逻辑运算、基本门电路、集成逻辑门电路等;技能训练有:集成逻辑二、项目要求用集成门电路74HC00制作简易逻辑状态测试笔。
要求测试逻辑高电平时,红色发光二极管亮,测试逻辑低电平时绿色发光二极管亮。
三、原理框图四、主要部分的实现方案当测试探针A测得高电平时,VD1导通,三级管V发射级输出高电平,经G1反相后,输出低电平,发光二级管LED1导通发红光。
又因VD2截止,相当于G1输入端开路,呈高电平,输出低电平,G3输出高电平,绿色发光二级管LED2截止而不发光。
五、实验过程中遇到的问题及解决方法(1)LED灯不能亮:检查硬件电路有无接错;LED有无接反;LED有无烧坏。
(2)不能产生中断或中断效果:检查硬件电路有无接错;程序中有无中断入口或中断子程序。
(3)输入电压没有反应:数据原理图有没有连接正确,检查显示部分电路有无接错;4011逻辑门的输入端有无浮空。
六、心得体会第一次做的数字逻辑试验是逻辑状态测试笔,那时什么都还不太了解,听老师讲解完了之后也还不知道从何下手,看到前面的人都起先着手做了,心里很焦急可就是毫无头绪。
老师说要复制一些文件协助我们做试验(例如:试验报告模板、试验操作步骤、引脚等与试验有关的文件),还让我们先画原理图。
这时,关于试验要做什么心里才有了一个模糊的框架。
看到别人在拷贝文件自己又没有U盘只好等着借别人的用,当然在等的时候我也画完了逻辑测试笔的实操图。
后面几次都没有过,但最后真的发觉试验的次数多了,娴熟了,知道自己要做的是什么,明确了目标,了解了方向,其实也没有想象中那么困难。
七、元器件一逻辑状态测试笔电路八、附实物图项目二多数表决器电路设计与制作一、项目描述本项目是以组合逻辑电路的设计方法,用基本门电路的组合来完成具有多数表决功能的电路。
数字电路实验报告

数字电路实验目录实验一组合逻辑电路分析 (1)实验二组合逻辑实验(一) (5)实验三组合逻辑实验(三) (9)实验四触发器和计数器 (16)实验五数字电路综合实验 (20)实验六555集成定时器 (22)实验七数字秒表 (25)实验一组合逻辑电路分析一、参考元件1、74LS00(四2输入与非门)2、74LS20(双4输入与非门)二、实验内容1、组合逻辑电路分析A B C DX15 V图1.1 组合逻辑电路分析电路图说明:ABCD按逻辑开关“1”表示高电平,“0”表示低电平;逻辑指示灯:灯亮表示“1”,灯不亮表示“0”。
实验表格记录如下:表1.1 实验分析:由实验逻辑电路图可知:输出X1=AB CD •=AB+CD ,同样,由真值表也能推出此方程,说明此逻辑电路具有与或功能。
2、密码锁问题:密码锁的开锁条件是:拨对密码,钥匙插入锁眼将电源接通,当两个条件同时满足时,开锁信号为“1”,将锁打开;否则,报警信号为“1”,则接通警铃。
试分析下图中密码锁的密码ABCD 是什么?X1X25 VABCD图1.2 密码锁电路分析实验真值表记录如下:表1.2 实验分析:由真值表(表1.2)可知:当ABCD 为1001时,灯X1亮,灯X2灭;其他情况下,灯X1灭,灯X2亮。
由此可见,该密码锁的密码ABCD 为1001.因而,可以得到:X1=ABCD ,X2=1X 。
实验二 组合逻辑实验(一)半加器和全加器 一、实验目的熟悉用门电路设计组合电路的原理和方法步骤。
二、预习内容1、复习用门电路设计组合逻辑电路的原理和方法步骤。
2、复习二进制数的运算①用“与非”门设计半加器的逻辑图 ②完成用“异或”门、“与或非”门、“与非”门设计全加器的逻辑图 ③完成用“异或”门设计三变量判奇电路的原理图 三、参考元件1、74LS283(集成超前4位进位加法器)2、74LS00(四2输入与非门)3、74LS51(双与或非门)4、74LS136(四2输入异或门) 四、实验内容1、用与非门组成半加器 由理论课知识可知:i S =i i A B ⊕=i i i i AB A B +=i i i i i i A B A A B B ••• i C =i i A B =i i A B根据上式,设计如下电路图:AiBi SiCi图2.1与非门设计半加器电路图得到如下实验结果:表2.1 半加器实验结果记录表格2、用异或门、与或非门、与非门组成全加器 由理论课知识可知:i S =1i i i A B C -⊕⊕ i C =1()i i i i i A B A B C -+⊕根据上式,设计如下电路:Ai BiCi-1SiCi图2.2 用异或门、与或非门、与非门设计的全加器表2.2 3、用异或门设计3变量判奇电路,要求变量中1的个数为奇数时,输出为1,否则为0. 根据题目要求可知:输出L=ABC ABC ABC ABC A B C +++=⊕⊕ 则可以设计出如下电路:74LS136NA B CL图2.3 用异或门设计的3变量判奇电路根据上图,可以得到如下实验数据表格:表2.3 4、用“74LS283”全加器逻辑功能测试U174LS283NS U M _410S U M _313S U M _14S U M _21C 49B 411A 412B 315A 314B 22A 23B 16A 15C 07图2.4 元件74LS283利用74LS283进行如下表格中的测试:表2.4 “74LS283实验三 组合逻辑实验(三)数据选择器和译码器的应用 一、实验目的熟悉数据选择器和数据分配器的逻辑功能和掌握其使用方法。
数电实验报告实验一心得

数电实验报告实验一心得引言本实验是数字电路课程的第一次实验,旨在通过实际操作和观察,加深对数字电路基础知识的理解和掌握。
本次实验主要涉及布尔代数、逻辑门、模拟开关和数字显示等内容。
在实验过程中,我对数字电路的原理和实际应用有了更深入的了解。
实验一:逻辑门电路的实验实验原理逻辑门是数字电路中的基本组件,它能够根据输入的布尔值输出相应的结果。
常见的逻辑门有与门、或门、非门等。
本次实验主要是通过搭建逻辑门电路实现布尔函数的运算。
实验过程1. 首先,我按照实验指导书上的电路图,使用示波器搭建了一个简单的与门电路。
并将输入端连接到两个开关,输出端连接到示波器,以观察电路的输入和输出信号变化。
2. 其次,我打开示波器,观察了两个开关分别为0和1时的输出结果。
当两个输入均为1时,示波器上的信号为高电平,否则为低电平。
3. 我进一步观察了两个开关都为1时的输出信号波形。
通过示波器上的脉冲信号可以清晰地看出与门的实际运行过程,验证了实验原理的正确性。
实验结果和分析通过本次实验,我成功地搭建了一个与门电路,并观察了输入和输出之间的关系。
通过示波器上的信号波形,我更加直观地了解了数字电路中布尔函数的运算过程。
根据实验结果和分析,我可以总结出:1. 逻辑门电路可以根据布尔函数进行输入信号的运算,输出相应的结果。
2. 在与门电路中,当输入信号均为1时,输出信号为1,否则为0。
3. 示例器可以实时显示电路的输入和输出信号波形,方便实验者观察和分析。
结论通过本次实验,我对数字电路的基本原理和逻辑门电路有了更深刻的理解。
我学会了如何搭建逻辑门电路,并通过示波器观察和分析输入和输出信号的变化。
这对我进一步理解数字电路的设计和应用具有重要意义。
通过实验,我还锻炼了动手操作、实际观察和分析问题的能力。
实验过程中,需要认真对待并细致观察电路的运行情况,及时发现和解决问题。
这些能力对于今后的学习和研究都非常重要。
总之,本次实验让我更好地理解了数字电路的基本原理和应用,提高了我的实验能力和观察分析能力。
数电实验报告答案

实验名称:数字电路基础实验实验目的:1. 熟悉数字电路的基本原理和基本分析方法。
2. 掌握数字电路实验设备的使用方法。
3. 培养动手实践能力和分析问题、解决问题的能力。
实验时间:2023年X月X日实验地点:实验室XX室实验仪器:1. 数字电路实验箱2. 万用表3. 双踪示波器4. 数字信号发生器5. 短路线实验内容:一、实验一:基本逻辑门电路实验1. 实验目的- 熟悉与门、或门、非门的基本原理和特性。
- 学习逻辑门电路的测试方法。
2. 实验步骤- 连接实验箱,设置输入端。
- 使用万用表测量输出端电压。
- 记录不同输入组合下的输出结果。
- 分析实验结果,验证逻辑门电路的特性。
3. 实验结果与分析- 实验结果与理论预期一致,验证了与门、或门、非门的基本原理。
- 通过实验,加深了对逻辑门电路特性的理解。
二、实验二:组合逻辑电路实验1. 实验目的- 理解组合逻辑电路的设计方法。
- 学习使用逻辑门电路实现组合逻辑电路。
2. 实验步骤- 根据设计要求,绘制组合逻辑电路图。
- 连接实验箱,设置输入端。
- 测量输出端电压。
- 记录不同输入组合下的输出结果。
- 分析实验结果,验证组合逻辑电路的功能。
3. 实验结果与分析- 实验结果符合设计要求,验证了组合逻辑电路的功能。
- 通过实验,掌握了组合逻辑电路的设计方法。
三、实验三:时序逻辑电路实验1. 实验目的- 理解时序逻辑电路的基本原理和特性。
- 学习使用触发器实现时序逻辑电路。
2. 实验步骤- 根据设计要求,绘制时序逻辑电路图。
- 连接实验箱,设置输入端和时钟信号。
- 使用示波器观察输出波形。
- 记录不同输入组合和时钟信号下的输出结果。
- 分析实验结果,验证时序逻辑电路的功能。
3. 实验结果与分析- 实验结果符合设计要求,验证了时序逻辑电路的功能。
- 通过实验,加深了对时序逻辑电路特性的理解。
四、实验四:数字电路仿真实验1. 实验目的- 学习使用数字电路仿真软件进行电路设计。
数字电路设计实验报告

数字电路设计实验报告实验目的:通过数字电路设计实验,掌握数字电路的基本原理和设计方法,提高学生的实际动手能力和创新能力。
实验内容:1. 半加器的设计与测试2. 全加器的设计与测试3. 4位全加器的设计与测试实验步骤:1. 半加器的设计与测试半加器是最简单的加法器件,由XOR门和AND门构成。
首先根据半加器的真值表,设计出电路原理图,并使用Multisim软件进行模拟验证。
接着,搭建实际电路,连接信号发生器和示波器,输入不同的输入信号,观察输出结果,并记录实验数据。
2. 全加器的设计与测试全加器是实现多位数相加必不可少的组件,由两个半加器和一个OR门构成。
根据全加器的真值表,设计电路原理图,并进行Multisim 模拟验证。
接着,搭建实际电路,连接信号发生器和示波器,输入不同的输入信号组合,观察输出结果,记录实验数据。
3. 4位全加器的设计与测试利用已经设计好的全加器单元,进行4位数相加的实验。
将4个全加器连接起来,形成4位全加器电路,输入两个4位二进制数,观察输出结果。
通过实验验证4位全加器的正确性,并记录实验数据。
实验结果分析:经过实验验证,半加器、全加器和4位全加器电路均能正确实现加法运算,输出结果符合预期。
通过实验,加深了对数字电路原理的理解,掌握了数字电路设计的基本方法。
这对于今后的学习和工作都具有重要意义。
结论:通过本次数字电路设计实验,我深入了解了数字电路的原理和设计方法,提高了实际动手能力和创新能力。
数字电路设计是电子信息类专业的重要实践环节,通过不断的实践和探索,相信我能够更加扎实地掌握数字电路设计知识,为将来的研究和工作打下坚实基础。
愿未来的路上能够越走越宽广,越走越稳健。
数字电路实验报告

数字电路实验报告实验目的本实验的目的是通过对数字电路的实际操作,加深对数字电路原理和实验操作的理解。
通过实验,理论联系实际,加深学生对数字电路设计和实现的认识和理解。
实验内容本次实验的实验内容主要包括以下几个方面:1.数码管显示电路实验2.时序电路实验3.组合电路实验实验仪器和器材本次实验所使用的仪器和器材包括:•真空发光数字数码管•通用数字逻辑芯片•实验箱•数字电路设计软件•示波器数码管显示电路实验在数码管显示电路实验中,我们将使用真空发光数字数码管和逻辑芯片来实现数字数码管的显示功能。
具体的实验步骤如下:1.按照实验箱上的电路图,将逻辑芯片及其它所需器件正确连接。
2.通过数字电路设计软件,编写和下载逻辑芯片的程序。
3.观察数码管的显示效果,检查是否符合预期要求。
时序电路实验时序电路是数字电路中非常重要的一部分,通过时序电路可以实现各种各样的功能。
在时序电路实验中,我们将通过设计一个简单的计时器电路来学习时序电路的设计和实现。
具体的实验步骤如下:1.在实验箱上按照电路图连接逻辑芯片及其它所需器件。
2.通过数字电路设计软件,编写和下载逻辑芯片的程序。
3.通过示波器观察时序电路的波形,检查是否符合设计要求。
组合电路实验组合电路是由多个逻辑门组合而成的电路,可以实现各种逻辑功能。
在组合电路实验中,我们将使用逻辑芯片和其他器件,设计并实现一个简单的闹钟电路。
具体的实验步骤如下:1.在实验箱上按照电路图连接逻辑芯片及其它所需器件。
2.通过数字电路设计软件,编写和下载逻辑芯片的程序。
3.测试闹钟电路的功能和稳定性,检查是否符合设计要求。
实验结果与分析通过以上的实验,我们成功地实现了数码管显示、时序电路和组合电路的设计和实现。
实验结果表明,在正确连接逻辑芯片和其他器件,并编写正确的程序的情况下,我们可以实现各种各样的数字电路功能。
通过实验过程中的观察和测试,我们也发现了一些问题和改进的空间。
例如,在时序电路实验中,我们发现时序电路的波形不够稳定,可能需要进一步优化。
VHDL数字电路课程实验报告

VHDL数字电路课程实验报告实验一8分频器一、实验要求:分别用信号量和变量实现八分频器二、实验过程:1、代码:8分频器vhdlibrary ieee;use ieee.std_logic_1164.all;entity freq_divider isport(clk: in std_logic;out1, out2: buffer bit);end freq_divider;architecture example of freq_divider issignal count1: integer range 0 to 7;beginprocess(clk)variable count2: integer range 0 to 7;beginif(clk'event and clk='1') thencount1<=count1+1;count2:=count2+1;if(count1=3) thenout1<=not out1;count1<=0;end if;if(count2=4) thenout2<=not out2;count2:=0;end if;end if;end process;end example;八分频器tbLIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fd_tb isEND fd_tb;architecture behavior of fd_tb iscomponent freq_dividerport(clk:IN STD_LOGIC;out1, out2: buffer bit);end component;signal clk:std_logic;signal out1,out2:bit;beginu1: freq_divider port map(clk,out1,out2);processbeginclk<='0';wait for 50 ns;loopclk<=not clk;wait for 25 ns;end loop;end process;end behavior;2、结果图:实验二实现例8.6一、实验要求:电路只有一个输入时钟信号,输出信号在适中的两个边沿都会发生变化二、实验内容:1、代码信号发生器vhdENTITY signal_gen ISPORT (clk: IN BIT;outp: OUT BIT);END signal_gen;ARCHITECTURE fsm OF signal_gen ISTYPE state IS (one, two, three);SIGNAL pr_state1, nx_state1: state;SIGNAL pr_state2, nx_state2: state;SIGNAL out1, out2: BIT;BEGINPROCESS(clk)BEGINIF (clk'EVENT AND clk = '1') THENpr_state1 <= nx_state1;END IF;END PROCESS;PROCESS (clk)BEGINIF (clk'EVENT AND clk = '0') THENpr_state2 <= nx_state2;END IF;END PROCESS;PROCESS (pr_state1)BEGINCASE pr_state1 ISWHEN one =>out1 <= '0';nx_state1 <= two;WHEN two =>out1 <= '1';nx_state1 <= three;WHEN three =>out1 <= '1';nx_state1 <= one;END CASE;END PROCESS;PROCESS (pr_state2)BEGINCASE pr_state2 ISWHEN one =>out2 <= '1';nx_state2 <= two;WHEN two =>out2 <= '0';nx_state2 <= three;WHEN three =>out2 <= '1';nx_state2 <= one;END CASE;END PROCESS;outp <= out1 AND out2;END fsm;信号发生器tbentity tb_fsm isend tb_fsm;architecture behavior of tb_fsm is component signal_gen isport( clk: in bit;outp: out bit);end component;signal clk,outp:bit;beginu1: signal_gen port map(clk,outp); processbeginclk<='0';wait for 20 ns;loopclk<=not clk;wait for 10 ns;end loop;end process;end behavior;2、结果图实验三常数比较器一、实验要求常数比较器,用于比较的变量位宽应大于等于常数二、实验内容1、代码常数比较器vhdLIBRARY ieee;USE ieee.std_logic_1164.all;entity compare isport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end compare;architecture compare of compare isconstant a: integer:=10;beginx1<='1' when a>b else '0';x2<='1' when a=b else '0';x3<='1' when a<b else '0';end compare;常数比较器tbLIBRARY ieee;USE ieee.std_logic_1164.all;entity tb_compare isend tb_compare;architecture behavior of tb_compare iscomponent compareport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end component;signal b: integer;signal x1,x2,x3: std_logic;beginu1: compare port map(b, x1,x2,x3);processbeginb<=5; wait for 10 ns;b<=8; wait for 10 ns;b<=10; wait for 10 ns;b<=13; wait for 10 ns; b<=10; wait for 10 ns; b<=3; wait for 10 ns; end process;end behavior;2、结果图实验四序列检测器一、实验要求序列检测’1001’弱检测到,输出‘1‘,否则输出’0‘二、实验内容1、状态图2、代码序列检测器vhdlibrary ieee;use ieee.std_logic_1164.all;entity string_detector isport(datain,clk: in bit;q: out bit);end string_detector;architecture sd of string_detector istype state is (zero, one, two, three, four);signal pr_state, nx_state: state;beginprocess(clk)beginif(clk'event and clk='1') thenpr_state<=nx_state;end if;end process;process(datain, pr_state)begincase pr_state iswhen zero=>q<='0';if(datain='1') then nx_state<=one;else nx_state<=zero;end if;when one=>q<='0';if(datain='0') then nx_state<=two;else nx_state<=zero;end if;when two=>q<='0';if(datain='0') then nx_state<=three;else nx_state<=zero;end if;when three=>q<='0';if(datain='1') then nx_state<=four;else nx_state<=zero;end if;when four=>q<='1';nx_state<=zero;end case;end process;end sd;序列检测器tb------------------------------------------------------------------ library ieee;use ieee.std_logic_1164.all;------------------------------------------------------------------ entity testBench isend testBench;------------------------------------------------------------------architecture test of testBench iscomponent string_detector isport(datain,clk: in bit;q: out bit);end component;signal datain,clk:bit;signal q:bit;beginSD: string_detector port map(datain,clk,q);processbeginfor i in 0 to 100 loopclk<='0';wait for 10 ns;clk<='1';wait for 10 ns;end loop;end process;processbegindin<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;end process;end test;3、结果图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录实验一四位海明校验码的逻辑设计2实验二十六进制译码计数器的设计 6 实验三脉冲分频逻辑电路的设计10 实验四八位数据串入并出逻辑设计16 实验五十六位运算器的逻辑设计20 实验六4Kx8bit存储器的设计25实验一四位海明校验码的逻辑设计实验目的:掌握海明校验的编码原理以及设计、调试方法,巩固提高组合逻辑知识,培养实际动手能力。
掌握总线的应用方法。
掌握总线信息出错时发现错我和纠正错我的原理,掌握奇偶校验的原理,掌握海明校验编码原理以及设计、调试方法。
实验要求:(1)设计信息位为4位的内存的海明校验逻辑电路,在读内存储器时,具有一位出错报错和纠正一位错误的功能。
(2)为了难其正确性,在读出信息的通路上,要串入造错用逻辑,位数自定。
(3)奇偶发生器与海明校难器对同一位用一块奇偶校验集成块实验原理:检错和校错由编码理论,任何一种编码是否具有检测和纠错能力,都与编码的最小距离有关,即任何两组合法代码间最少的二进制位数的差异,L-1=D+C(D>=C)L为编码的最小距离,D 表示检测错误的位数;C表示纠正错误的位数。
故,8421码不具备检错能力,这是因为它的最小码距为1,当8421码的码字中有一位出错,而产生的错误代码就有可能是另一个码字,这样,无法判断它是否已出错。
8421海明校验码8421海明校验码由8421码加三位校验码组成.设8421码为I1 I2 I3 I4,三位校验码为:P3 P2 P1,则8421码为下列七位代码:校验码的值由下式确定:P3I4I3I2=⊕⊕ P2I4I3I1=⊕⊕ P1I4I2I1=⊕⊕由此可得8421海明码的最小码距为3 ,故D=1,C=1,可检测并纠正一位错误。
输出时在输出端先求出校验和:S3I4I3I2P3=⊕⊕⊕ S2I4I3I1P2=⊕⊕⊕ S1I4I2I1P1=⊕⊕⊕然后判断S3S2S1,如果代码不出错,则S3S2S1=000,否则由S3S2S1构成的二进制数为1位指出出错位。
实验实现:1.利用Quartus II 工具,画出实验的TTl 电路如下图经过编译仿真之后,仿真波形图如下图:位序 7 6 5 4 3 2 18421海明码I4 I3 I2 P3 I1 P2 P1如图看见,当造错数据只与原数据有一位错(1000,0100,0010,0001)时,输出的数据和输入的数据是一样的,通过海明码将错误的一位数据进行了修正。
而当没有数位错的时候,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 hmnum[0] = num[3]^num[1]^num[0],hmnum[1] = num[3]^num[2]^num[0],hmnum[2] = num[3]^num[2]^num[1];assign ckhmnum[0] = misnum[3]^misnum[1]^misnum[0]^hmnum[0], ckhmnum[1] = misnum[3]^misnum[2]^misnum[0]^hmnum[1],ckhmnum[2] = misnum[3]^misnum[2]^misnum[1]^hmnum[2];assign misnum[0] = num[0]^mistake[0],misnum[1] = num[1]^mistake[1],misnum[2] = num[2]^mistake[2],misnum[3] = num[3]^mistake[3];assign erbit[0] = (~ckhmnum[2])&ckhmnum[1]&ckhmnum[0], erbit[1] = ckhmnum[2]&(~ckhmnum[1])&ckhmnum[0],erbit[2] = ckhmnum[2]&ckhmnum[1]&(~ckhmnum[0]),erbit[3] = ckhmnum[2]&ckhmnum[1]&ckhmnum[0];assign out = erbit ^ misnum;endmodule这段代码,我用的assign语句,对wire类型进行赋值,因为在TTL电路之中并没有用到寄存器,而且这是一个典型的组合逻辑电路,所以并没有只用reg寄存器类型的变量。
其中的每一个赋值都和上述的TTL电路相对应。
其中num为输入的数据,mistake为造错的输入,hmnum为由输入数据所得到的的海明码,misnum为造错之后线路上的值,ckhmnum为根据海明码和数据生成的用于纠错的海明码,而erbit为根据ckhmnum所得到的哪一位错误的信息,最后根据这信息将错误的位进行改正。
下面是根据verilog编译仿真后的波形图如图,当造错数据只与原数据有一位错(1000,0100,0010,0001)时,输出的数据和输入的数据是一样的,通过海明码将错误的一位数据进行了修正。
没有错误的时候(0000),输出数据和输入数据也是一样的。
实验小结:这个实验让我熟悉了本实验所用的软件的使用方法,如何利用quartus软件,画电路图,并且编译仿真,以及利用verilog HDL编写简单的组合逻辑电路,以及利用quartus软件对编写的verilog程序进行编译,仿真,以及基本的数字电路设计调试方法,本实验让我受益匪浅。
实验二 十六进制译码计数器的设计实验目的:1.掌握设计组合逻辑电路的方法2.不同器件,不同设计方法的比较3掌握数码显示与译码器电位间的关系,掌握小规模可编程芯片的应用,掌握GAL方程的设计实验要求:用GAL 方程设计方法进行实验,并用MAX+PLUAS 进行原理图形设计并仿真验证 实验器件:计算机及相关软件,实验教学板,GAL16V8芯片,插线等 实验原理:G f V CC a b A 10 hh h e d V CC c h七段发光二极管管脚说明 共阴型 共阳型1 2 3 4 5a b c h d e f g 6 7 8 9 10 a b c d e f g a b c defg由七段管的管脚图可以列出真值表输入信号七段数码管管脚信号A B C D 数码a b c d e f g0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 2 1 1 0 1 1 0 1 0 0 1 1 3 1 1 1 1 0 0 1 0 1 0 0 4 0 1 1 0 0 1 1 0 1 0 1 5 1 0 1 1 0 1 1 0 1 1 0 6 1 0 1 1 1 1 10 1 1 1 7 1 1 1 0 0 0 01 0 0 0 8 1 1 1 1 1 1 1 1 0 0 1 9 1 1 1 1 0 1 1 1 0 1 0 A 1 1 1 0 1 1 1 1 0 1 1 B 0 0 1 1 1 1 1 1 1 0 0 C 0 0 0 1 1 0 1 1 1 0 1 D 0 1 1 1 1 0 1 1 1 1 0 E 1 0 0 1 1 1 11 1 1 1 F 1 0 0 0 1 1 1由上述真值表可以得到表达式a = ~(~A&~B&~C&D|~A&B&~C&~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&D)由此表达式即可得到对应的数码显示实现方法:(1)GAL芯片PLD16V8BASIC DECODECYB 2013.10.20SHIYAN USTC V1.0A B C D NC NC NC NC NC GNDNC 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*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*DDESCRIPTIONPs:具体的效果在实验的那一天已经由助教检查通过。