北邮数电实验报告-信息_第1页
北邮数电实验报告-信息_第2页
北邮数电实验报告-信息_第3页
北邮数电实验报告-信息_第4页
北邮数电实验报告-信息_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字电路与逻辑设计实验姓 名 * 学 院 信息与通信工程学院专 业 信息工程 班 级 * 学 号 * 班内序号 * 实验一一、实验名称和实验任务要求1. 实验内容:QuartusII原理图输入法设计与实现。2. 实验目的:(1) 熟悉用QuartusII原理图输入法进行电路设计和仿真。(2) 掌握QuartusII图形模块单元的生成与调用。(3) 熟悉实验板的使用。3. 实验任务要求:(1) 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。 (2) 用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。(3) 用3线8线译码器(74LS138)和逻辑门实现函数F=(/)(/)(/)+(/)(/)+(/)(/)+,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。二、原理图半加器模块和逻辑门设计实现的全加器:三、仿真波形图及分析电路实现了全加器的功能。全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ainbincincout = (ainbin)cin + ain*bin。列出真值表:输入输出ainbincincoutsum0000000101010010111010001101101101011111仿真波形对比真值表,可以看出波形图与理论值完全符合。四、故障及问题分析1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟也没继续下载。解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。实验二一、实验名称和实验任务要求1. 实验内容:用VHDL设计与实现组合逻辑电路。2. 实验目的:(1) 熟悉用VHDL语言设计组合逻辑电路的方法。(2) 熟悉用QuartusII文本输入法进行电路设计。3. 实验任务要求:(1) 用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个1时,输出为1,否则输出0,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (2) 用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。(3) 用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,7段数码管显示输出信号。二、VHDL代码1. 奇校验器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jijiaoyanqi ISPORT( A:STD_LOGIC; B:STD_LOGIC; C:STD_LOGIC; D:STD_LOGIC; F:OUT STD_LOGIC);END jijiaoyanqi;ARCHITECTURE one OF jijiaoyanqi IS SIGNAL n1,n2 : STD_LOGIC;BEGIN n1=A XOR B; n2=n1 XOR C; F B B B B B B B B B B B=ZZZZ;END CASE;END PROCESS;END zhuanyu3; 3. 数码管译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shumaguanyimaqi ISPORT( A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END shumaguanyimaqi;ARCHITECTURE shuma OF shumaguanyimaqi ISBEGINPROCESS(A)BEGINC B B B B B B B B B B B=ZZZZZZZ;END CASE;END PROCESS;END shuma;三、故障及问题分析1、问题:代码写好以后编译出现错误,Error (10568): VHDL error at jijiaoyanqi.vhd(17): cant write to interface object partout of mode IN,由于报错指到了第17行F=n2 XOR D; 导致我开始的时候没意识到这是哪里的错误。解决方法:在百度查了以后发现是F:OUT STD_LOGIC); 这句我写成了F:IN STD_LOGIC);以后要注意少犯这些马虎的错误。2、问题:把代码下载到板子上的过程中,再次出现了第一节课出现的下载停止的问题,再次尝试后也没有下载成功,第三次接线的时候等了好久,Hardware Setup窗口也没有显示有硬件接入。解决方法:换了一台电脑尝试然后成功了,我觉得可能是两个原因,一是我反复操作导致软件反应时间长,二是我本来用的电脑接口连接不好。实验三一、实验名称和实验任务要求1. 实验内容:用VHDL设计与实现时序逻辑电路。2. 实验目的:(1) 熟悉用VHDL语言设计时序逻辑电路的方法。(2) 熟悉用QuartusII文本输入法进行电路设计。3. 实验任务要求:(1) 用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器。要求在QuartusII平台上设计程序并仿真验证设计。 (2) 用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号。(3) 将(1)、(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。二、模块端口说明及连接图1. 整个电路输入端:时钟信号CLK,复位键CLR。2. 分频器及计数器的端口连接:复位键CLR作为分频器复位键CLR1、8421十进制计数器复位键CLR2;时钟信号CLK作为分频器的时钟信号CLK1,分频器输出CLK_OUT1作为8421十进制计数器的时钟信号CLK2;计数器的输出Q0,1,2,3作为数码管译码器的输入a 0,1,2,3。3. 整个电路输出端:b0,1,2,3,4,5,6,分别对应7段数码管;c0,1,2,3,4,5,分别对应6个数码管译码器。三、VHDL代码(1) 8421十进制计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZY8421shijinzhi ISPORT(CLK2,CLR2:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ZY8421shijinzhi;ARCHITECTURE behave OF ZY8421shijinzhi ISSIGNAL Q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK2,CLR2)BEGINIF CLR2 = 1 THEN Q_temp =0000;ELSIF CLK2EVENT AND CLK2 = 1 THEN IF Q_temp = 1001 THEN Q_temp =0000;ELSE Q_temp =Q_temp+1;END IF;END IF;END PROCESS;Q =Q_temp;END behave;(2) 分频器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY div_50M ISPORT(CLK1,CLR1:IN STD_LOGIC;CLK_OUT1:OUT STD_LOGIC);END div_50M;ARCHITECTURE behave OF div_50M ISSIGNAL temp:INTEGER RANGE 0 TO 24999999;SIGNAL clkout:STD_LOGIC;BEGINPROCESS(CLK1,CLR1)BEGINIF CLR1 = 1 THEN temp =0;ELSIF CLK1EVENT AND CLK1 = 1 THENIF temp = 24999999 THEN temp =0;clkout =NOT clkout;ELSE temp =temp+1;END IF;END IF;END PROCESS ;CLK_OUT1 CLK,CLR1=CLR,CLK_OUT1=clkin);u2: ZY8421shijinzhi PORT MAP (CLK2=clkin,CLR2=CLR,Q=a);PROCESS(a)BEGINc b b b b b b b b b b b b=0000000; 这一行,导致情况包括不完全而报错。3、问题:仿真波形中b的显示类似乱码,并不是预想的二进制码。解决方法:老师讲解后知道了应该在Count Value选项中的Radix栏选择Binary。实验四一、实验名称和实验任务要求1. 实验内容:用VHDL设计与实现相关电路。2. 实验目的:(1) 掌握VHDL语言的语法规范,掌握时序电路描述方法。(2) 掌握多个数码管动态扫描显示的原理及设计方法。3. 实验任务要求:(1) 用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示“班号班内序号”这6个数字图形到6个数码管,仿真验证其功能,并下载到实验板测试。 (2) 用VHDL语言设计并实现六个数码管滚动显示电路。循环左滚动,始终点亮6个数码管,左出右进。状态为:124-17,24-171,4-1712,-17124,17124-,7124-1,124-17。二、 模块端口说明及连接图1. 输入端:clk时钟信号2. 输出端:partout0,1,2,3,4,5,6,分别对应7段数码管;catout0,1,2,3,4,5:分别对应6个数码管译码器三、VHDL代码(1) 同时显示“班号班内序号”这六个数字图形到6个数码管LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZY12417 ISPORT ( clk : IN STD_LOGIC;partout : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);catout : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END ZY12417;ARCHITECTURE A OF ZY12417 ISSIGNAL part: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL cat: STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL tempclk: STD_LOGIC;SIGNAL count: INTEGER RANGE 0 TO 1999;-为便于仿真,仿真图对应代码将分频改成了50CONSTANT M: INTEGER :=1999;BEGINP1:PROCESS(clk)BEGINIF(clkEVENT AND clk=1)THENIF count=M THENcount=0;tempclk= NOT tempclk;ELSEcount cat=011111;part cat=101111;part cat=110111;part cat=111011;part cat=111101;part cat=111110;part cat=011111;part=0110000; -1END CASE;END IF;END PROCESS P2;catout=cat;partout=part;END A;(2) 滚动显示电路(选做)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY gundongxianshi IS PORT( clk,clear:IN STD_LOGIC; catout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); partout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END gundongxianshi;ARCHITECTURE a OF gundongxianshi IS SIGNAL cat :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL part :STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL cnt,cnt1 :INTEGER RANGE 0 TO 11; SIGNAL tmp:INTEGER RANGE 0 TO 15999; SIGNAL clk1:STD_LOGIC;BEGIN p0:PROCESS(clk,clear) BEGIN IF clear=0 THEN tmp=0; ELSIF clkEVENT AND clk=1 THEN IF tmp=15999 THEN tmp=0; ELSE tmp=tmp+1; END IF; END IF; END PROCESS p0; p1:PROCESS(tmp) BEGIN IF clkEVENT AND clk=1 THEN IF tmp1000 THEN clk1=0; ELSE clk1=1; END IF; END IF; END PROCESS p1; p2:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1) THEN IF(cnt=11) THEN cnt=0; ELSE cnt=cnt+1; END IF; END IF; END PROCESS p2; p3:PROCESS(clk1) BEGIN IF(clk1EVENT AND clk1=1) THEN IF(cnt1=11) THEN cnt1=0; ELSE cnt1=cnt1+1; END IF; END IF; END PROCESS p3; p4:PROCESS(cnt,cnt1) BEGIN IF(clear=0)THEN catcatcatcatcatcatcatcat=0000000; END CASE; END IF; END PROCESS p4; catout=cat; p5:PROCESS(cnt) BEGIN IF(clear=0) THEN partpartpartpartpartpartpartpart=111111; END CASE; END IF; END PROCESS p5; partout=part;END a; 四、 仿真波形图及分析同时显示“班号班内序号”这六个数字图形到6个数码管分析仿真波形图可知,数码管译码器从左到右依次显示124-17:从左边数,第一个数字catout=011111对应partout=0110000,数码管显示数字1;第二个数字catout=101111对应partout=1101101,数码管显示数字2;第三个数字catout=110111对应partout=0110011,数码管显示数字4;第四个数字catout=111011对应partout=0000001,数码管显示符号“”;第五个数字catout=111101对应partout=0110000,数码管显示数字1;第六个数字catout=111110对应partout=1110000,数码管显示数字7;当频率足够大,扫描速度很快时,人眼将能看到持续稳定的124-17 的图像。在实验室实际测试时,下载到电路板测试成功。五、故障及问题分析1、问题:稳定显示数字的代码写好以后编译出现错误,Error (10500): VHDL syntax error at ZY12417.vhd(29) near text PROCESS; expecting if。解决方法:把代码从头到尾仔细检查以后,发现是应该在26行后面加一行END IF; 又犯了这种低级错误,以后一定要注意代码规范。2、问题:稳定显示数字的代码进行仿真时得不到理想的波形图。解决方法:需要把仿真结束时间调大,把分频系数调小。我把结束时间调到了1ms,分频系数改为了50,得到了理想的波形。回想第三次实验也遇到了这个问题,因为老师在一旁讲解,所以对于这一点没有留下很深的印象,以后我要多练习自己独立操作的能力。3、问题:开始的时候自己写的滚动代码电路编译多处报错,对于如何改正代码完全

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论