资源描述
邮电大学数字电路与逻辑设计实验学院: _ _ _ 班内序号:实验一一、 实验名称Quartus II 原理图输出法设计(一) 半加器二、 实验任务要求用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元.三、 设计思路和过程设计思路半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路.数据输入:被加数AI、加数BI数据输出:半加和SO、进位CO设计过程列出真值表输入输出AIBISOCO0000011010101101*表中两个输入是加数AI和BI,输出有一个是和SO,另一个是进位CO.根据真值表写出输出逻辑表达式该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下:,.所以,可以用一个两输入异或门和一个两输入与门实现.实验原理图四、 仿真波形图与分析根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能.但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲.(二) 全加器二、实验任务要求用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号.三、设计思路和过程设计思路全加器与半加器的区别在于全加器有一个低进位CI,从外部特性来看,它是一个三输入两输出的器件.设计过程(1) 全加器的真值表如下输入输出AIBICISOCO0000000110010100110110010101011100111111*其中AI为被加数,BI为加数,CI为相邻低位来的进位数.输出本位和为SO,向相邻高位进位数为CO.根据真值表写出逻辑表达式:,根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器.实验原理图四、仿真波形图与分析根据仿真波形对比全加器真值表,可以确定电路实现了全加器的功能.三3线8线译码器二、实验任务要求 用3线8线译码器74LS138和逻辑门设计实现函数,仿真验证其功能,并下载到实验板测试.要求用拨码开关设定输入信号,发光二极管显示输出信号.三、设计思路和过程设计思路 74LS138是一个3线8线的译码器,其输出为低电平有效,使能端G1为高电平有效,G2、G3为低电平有效,当其中一个为高电平,输出端全部为1.在中规模集成电路中译码器的几种型号里,74LS138使用最广泛. 要实现的函数用最小项表示如下:F=m只要将相应输出用一个四输入与非门实现即可.注意74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门与或非门因为每次仅一个为低电平,其余皆为高电平;74LS138与前面不同的是,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能.实验原理图四、仿真波形图与分析当且仅当ABC输入为000、010、100、111时,F=1;可知电路实现了函数.实验二一、 实验名称VHDL组合逻辑电路设计一奇校验器二、 实验任务要求用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个1时,输出为1,否则输出为0,仿真实现验证其功能,并下载到实验板测试.要求用拨码开关设定输入信号,发光二极管显示输出信号.三、 设计思路和过程输入元素:a3,a2,a1,a0输出元素:b输入输出a3a2a1a0b00000000110010100110010010101001100011111000110010101001011111000110111110111110四、VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hy_check IS PORTa: IN STD_LOGIC_VECTOR ;b: OUT STD_LOGIC;end hy_check;ARCHITECTURE hy_arch OF hy_check IS BEGINPROCESSBEGINCASE a ISWHEN0000 = b b b b b b b b b b b b b b b b =0;END CASE;END PROCESS;END;五、 仿真波形图与分析根据仿真波形对比奇校验码的真值表,可以确定电路实现了奇校验器的功能.(二) 数码管译码器二、实验任务要求 用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试.要求用拨码开关设定输入信号,7段数码管显示输出信号.三、 设计思路和过程输入元素:A3A0输出元素:B6B0,C5C0输入输出A3A2A1A0B6B5B4B3B2B1B000001111110000101100000010110110100111111001010001100110101101101101101011111011111100001000111111110011111011*真值表由数码管显示的原理确定.四、VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hy_encoder1 ISPORTA:IN STD_LOGIC_VECTOR; B:OUT STD_LOGIC_VECTOR; C:OUT STD_LOGIC_VECTOR;END hy_encoder1;ARCHITECTURE encoder_arch OF hy_encoder1 ISBEGINPROCESSBEGINCBBBBBBBBBBB=ZZZZZZZ;END CASE;END PROCESS;END encoder_arch;五、仿真波形图与分析 根据仿真波形对比数码管译码器的真值表,可以确定实现了数码管译码器的功能.三8421码到余三码二、实验任务要求 用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试.要求用拨码开关设定输入信号,发光二极管显示输出信号.三、设计思路和过程输入数据:A3A0输出数据:B3B0输入输出A3A2A1A0B3B2B1B000000011000101000010010100110110010001110101100001101001011110101000101110011100*余三码就是在8421码的基础上+3.四、 VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hy_trans1 ISPORTA:IN STD_LOGIC_VECTOR; B:OUT STD_LOGIC_VECTOR;END hy_trans1;ARCHITECTURE trans_ex3 OF hy_trans1 ISBEGINPROCESSBEGINCASE A ISWHEN 0000=BBBBBBBBBBB=ZZZZ;END CASE;END PROCESS;END trans_ex3;五、 仿真波形图与分析根据仿真波形对比真值表,可以确定电路实现了8421码到余三码的转换.实验三一、 实验名称VHDL时序逻辑电路设计一分频器二、 实验任务要求用VHDL语言设计实现一个分频输出信号占空比为50%的分频器.要求在Quartus II 平台上设计程序并仿真验证设计.三、 设计思路和过程设计思路确定分频系数N后,以为计数标准,一旦计数满,输出.设计过程选取N=20,以0-4计数,到4取反.输入元素:clk,clear输出元素:clk_out四、 VHDL程序LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL;USE IEEE. STD_LOGIC_UNSIGNED. ALL;ENTITY hy_div ISPORT;END hy_div;ARCHITECTURE a OF hy_div ISSIGNAL tmp:INTEGER RANGE 0 TO 9;SIGNAL clktmp:STD_LOGIC;BEGINPROCESSBEGINIF clear=0 THEN tmp=0;ELSIF clkevent AND clk=1 THEN IF tmp=9 THEN tmp=0; clktmp=NOT clktmp;ELSE tmp=tmp+1;END IF;END IF;END PROCESS;clk_out=clktmp;END a;五、 仿真波形图与分析 分析仿真波形,可以确定电路实现了20倍分频的功能.(二) 十进制计数器二、实验任务要求用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能.三、 设计思路和过程设计思路满10异步复位.设计过程输入元素:clk,clear输出元素:q3,q2,q1,q0四、VHDL程序LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL;USE IEEE. STD_LOGIC_ARITH. ALL;ENTITY hy_count ISPORTclk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR;END hy_count;ARCHITECTURE a OF hy_count ISSIGNAL :INTEGER RANGE 0 TO 9;BEGINPROCESSBEGINIF clear=0 THEN =0;elsIF THENIF =9 THEN =0;ELSE =+1;END IF;END IF;END PROCESS;q=CONV_STD_LOGIC_VECTOR;END a;五、仿真波形图与分析 分析仿真波形,可以确定电路实现了十进制计数器的功能.三十进制计数器的数码管显示二、实验任务要求 将2中的8421码十进制计数器下载到实验板测试.要求用按键设定输入信号,发光二极管显示输入信号.三、设计思路和过程设计思路此系统中应包括分频器、十进制计数器、数码管译码器.设计过程输入元素:ain,bin,cin输出元素:cout,cat四、VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hy_union ISPORTain:IN STD_LOGIC;bin:IN STD_LOGIC;cin:IN STD_LOGIC;cout:OUT STD_LOGIC_VECTOR;cat:OUT STD_LOGIC_VECTOR;end hy_union;ARCHITECTURE zonghe_arch OF hy_union ISCOMPONENT div50m分频器PORT;END COMPONENT;COMPONENT hy_count计数器PORTclk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR;END COMPONENT;COMPONENT yima数码管译码器PORTa:IN STD_LOGIC_VECTOR;b:OUT STD_LOGIC_VECTOR;c:OUT STD_LOGIC_VECTOR;end COMPONENT;SIGNAL d,e:STD_LOGIC;SIGNAL f:STD_LOGIC_VECTOR;BEGINu1:div50m PORT MAPain,clk_out=d;u2:hy_count PORT MAPd,clear=cin,q=f;u3:yima PORT MAPf,b=cout,c=cat;END zonghe_arch;实验四一、 实验名称数码管扫描显示控制器设计与实现二、 实验任务要求 用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这六个不同的数字图形到六个数码管上,仿真验证其功能,并下载到实验板测试.三、 设计思路和过程设计思路多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象.当闪烁显示的发光二极管闪烁频率较高时,我们将观察到持续点亮的现象.同理,当多个数码管依次显示,当切换速度足够快时,我们将观察到所有数码管都是同时在显示.一个数码管要稳定显示要求显示频率大于50Hz,那么六个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象.设计过程数据输入:clk,clear数据输出:B,C四、 VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HY ISPORTclk,clear:IN STD_LOGIC; B:OUT STD_LOGIC_VECTOR; C:OUT STD_LOGIC_VECTOR;END HY;ARCHITECTURE behave OF HY IS SIGNAL tmp:INTEGER RANGE 0 TO 5; SIGNAL count:STD_LOGIC_VECTOR;count决定哪个数码管有示数 SIGNAL f_temp:STD_LOGIC_VECTOR;BEGIN p1:PROCESS排次序 BEGIN IF clkEVENT AND clk=1 THEN IF tmp=5 THEN tmp=0; ELSE tmp=tmp+1; END IF; END IF; END PROCESS p1;p2:PROCESS数码管显示数BEGINIF THEN countcount=011111;f_tempcount=101111;f_tempcount=110111;f_tempcount=111011;f_tempcount=111101;f_tempcount=111110;f_temp=1011011;-5END CASE;else count=111111;END IF;END PROCESS p2;C=count;B=f_temp;END behave;五、 仿真波形图分析波形易知,C确实实现了六个数码管的交替显示,B则控制着各对应管输出0-5相应的数字.数电实验总结故障和问题分析故障一:仿真时设置clk脉冲宽度为1us,报错解决办法:经检查发现,未更改endtime设置,把endtime重置为50us.故障二: 下载后,按键没有反应.解决办法: 检验相应管脚是否设置正确,检查管脚是否失效,下载操作是否正确.故障三: 数码管显示乱码.解决办法:一开始我直接检查代码,检查了好久都没发现错误,后来换了个实验板,重新下载后就好了.另:实验过程中,唯一的问题是对于多输入电路,静态功能冒险还是会存在的,在这种情况下应该加入选通脉冲来消除静态功能冒险.总结与结论本学期的四次实验均较为简单,只要认真听讲、细心操作,基本没有太大的问题.难点主要是对VHDL语言的学习和对Quartus II软件的熟悉. 起初接触Quartus II,感觉毫无头绪.在预习过课本之后,再结合数字电路理论课上所学的知识,终于有了一些思路.顺着这思路,对所求元件进行了相应的功能设计,然后开始了相应代码的编写.在编写过程中,遇到了很多关于VHDL语言的困扰,经过不断的调整和适应,终于掌握了相关的语法规则.通过这次实验,我收获最多的还是熟悉了数字电路的设计过程,之前所学习的还是理论上的知识.理论固然重要,但一味纸上谈兵,是不可能掌握实际技能的.希望今后能够多一些类似的实验、实践活动的机会,让我们提高动手能力、培养实用技能.13 / 13
展开阅读全文