北邮数字电路与逻辑设计实验报告.doc_第1页
北邮数字电路与逻辑设计实验报告.doc_第2页
北邮数字电路与逻辑设计实验报告.doc_第3页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

北京邮电大学数字电路与逻辑设计实验报告学院: 班级: 姓名: 学号: 实验一 Quartus II原理图输入法设计与实现一、实验目的:(1) 熟悉Quartus II原理图输入法进行电路设计和仿真;(2) 掌握Quartus II 图形模块单元的生成与调用;(3) 熟悉实验板的使用;二、实验所用器材:(1) 计算机;(2) 直流稳压电源;(3) 数字系统与逻辑设计实验开发板。三、实验任务要求 (1) 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。(2) 用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。(3) 用3线-8线译码器(74LS138)和逻辑门设计实现函数 ,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 四、 实验原理图及仿真波形图(1) 半加器 半加器原理图仿真波形仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。 (2)全加器全加器原理图 仿真波形仿真波形图分析 :根据仿真波形对比半加器真值表,可以确定电路实现了全加器的功能(2) 74138 3线-8线译码器 原理图 仿真波形图 仿真波形图分析 ;当且仅当ABC输入为000、010、100、111时,F=1,可知电路实现了函数。 实验二 用VHDL设计与实现组合逻辑电路1、 实验目的:(1)熟悉用VHDL语言设计时序逻辑电路的方法;(2)熟悉用Quartus II文本输入法进行电路设计;(3)熟悉不同的编码及其之间的转换。二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。三、实验任务要求 (1)用 VHDL语言设计实现一个共阴极7段数码管译码器;(2)用VHDL语言设计一个8421码转余三码的代码转换器;(3)用VHDL语言设计设计一个四位2进制奇校验器。四、 实验代码及仿真波形图数码管译码器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shumaguanyimaqi IS PORT(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 encoder_arch OF shumaguanyimaqi IS BEGIN PROCESS(A) BEGIN C B B B B B B B B B B B B B B B B B B B B B B=ZZZZ; END CASE; END PROCESS; END trans_ex3; 仿真波形图仿真波形分析:8421码转换余三码,由0111转换成为了1010可以看出功能已经实现,仿真验证了代码功能正确。奇校验LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jxhjijiaoyan IS PORT( A:STD_LOGIC; B:STD_LOGIC; C:STD_LOGIC; D:STD_LOGIC; F:OUT STD_LOGIC); END jxhjijiaoyan; ARCHITECTURE one OF jxhjijiaoyan IS SIGNAL n1,n2 : STD_LOGIC; BEGIN n1=A XOR B; n2=n1 XOR C; F=n2 XOR D; END one; 仿真波形图仿真波形分析:当ABCD为1111时,输出F为0,ABCD为1110时,输出F为1,可见奇校验功能得以实现。实验三 用VHDL设计与实现时序逻辑电路一、实验目的:(1)熟悉用VHDL语言设计时序逻辑电路的方法;(2)熟悉用Quartus II文本输入法进行电路设计;(3)熟悉不同的编码及其之间的转换。二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。三、实验任务要求 (1)用 VHDL语言设计实现一个8421十进制计数器;(2)用VHDL语言设计一个分频器;(3)将(1)、(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。四、 实验代码及仿真波形图8421十进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jxhshijinzhijishuqi ISPORT(clk,reset:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END jxhshijinzhijishuqi;ARCHITECTURE a OF jxhshijinzhijishuqi ISSIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,reset)BEGINIF reset=0 THENq_temp =0000;ELSIF clkEVENT AND clk=1 THENIF q_temp=1001 THENq_temp =0000;ELSE q_temp =q_temp+1;END IF;END IF;END PROCESS;q= q_temp;END a; 仿真波形图仿真波形图分析:8421十进制计数器随着时钟的信号进行计数,restart是复位,当复位为零的时候计数器重新计数。根据仿真结果来看,8421十进制计数器功能得以实现。分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jxhfenpinqi ISPORT(clk:IN STD_LOGIC;clear:IN STD_LOGIC;clk_out:OUT STD_LOGIC);END jxhfenpinqi;ARCHITECTURE a OF jxhfenpinqi ISSIGNAL temp:INTEGER RANGE 0 TO 11;BEGINp1:PROCESS(clear,clk)BEGINIF clear=0THENtemp=0;ELSIF clkEVENT AND clk=1 THENIF temp=11 THENtemp=0;ELSE temp=temp+1;END IF;END IF;END PROCESS p1;p2:PROCESS(temp)BEGINIF temp6 THENclk_out=0;ELSE clk_out=1;END IF;END PROCESS p2;END a;仿真波形仿真波形分析:分频器将频率分开,置零端正常工作,根据仿真波形可以看出来,分频器的功能得以正常实现。组合电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jxhfenpinqi ISPORT(clk:IN STD_LOGIC;clk_out:OUT STD_LOGIC);END jxhfenpinqi;ARCHITECTURE behave OF jxhfenpinqi ISSIGNAL temp:INTEGER RANGE 0 TO 24999999;SIGNAL clktmp:STD_LOGIC;BEGIN PROCESS(clk) BEGIN IF clkevent AND clk=1 THEN IF temp=24999999 THEN temp=0; clktmp=NOT clktmp; ELSE temp=temp+1; END IF; END IF; END PROCESS; clk_out=clktmp; END behave;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jxhshijinzhi IS PORT( CLK,CLEAR:IN STD_LOGIC; Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END jxhshijinzhi;ARCHITECTURE A OF jxhshijinzhi ISSIGNAL Q_TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,clear)BEGIN IF CLEAR=1THEN Q_TEMP=0000;elsIF(CLKEVENT AND CLK=1)THEN IF Q_TEMP=1001THEN Q_TEMP=0000; ELSE Q_TEMP=Q_TEMP+1; END IF; END IF;END PROCESS;Q=Q_TEMP;END A; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jxhshumaguan ISPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); c:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); END jxhshumaguan;ARCHITECTURE seg7_arch OF jxhshumaguan ISBEGINPROCESS(a)BEGINcbbbbbbbbbbbain,clk_out=d);u2:jxhshijinzhi PORT MAP(clk=d,clear=bin,q=f);u3:jxhshumaguan PORT MAP(a=f,b=cout,c=cat);END behave;端口的绑定:端口分析:Ain是时钟信号的输入绑定了18串口,bin是置零信号绑定了20 串口,cat5-0是每个数码管各自的绑定,根据板子上的串口数字绑定,cout7-0是数码管的每一个亮的部分,根据板子上的提示串口进行绑定,根据编程可以实现让数码管显示不同的数字。电路图:代码中是使用PORT MAP 进行连接的u1:jxhfenpinqi PORT MAP(clk=ain,clk_out=d);u2:jxhshijinzhi PORT MAP(clk=d,clear=bin,q=f);u3:jxhshumaguan PORT MAP(a=f,b=cout,c=cat);在此图中可以看出ain接分频器的clk,分频器的clk_out接十进制译码器的CLK,bin接十进制译码器的CLEAR,十进制译码器的Q接数码管的a,数码管的b,c分别接count和cat。实验四 数码管扫描显示控制器设计与实现1、 实验目的:1. 掌握VHDL语言的语法规范,掌握时序电路描述方法。2. 掌握多个数码管动态扫描现实的原理及设计方法。2、 实验所用器材:1.计算机:装有Quartus软件,为VHDL语言提供操作场所。2.直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。3.数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。三、实验任务要求 1. 用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上。2. 用VHDL语言设计并实现六个数码管滚动显示电路。(1) 循环左滚动,始终点亮6个数码管,左出右进。状态为:012345123450234501345012450123501234012345(2)向左滚动,用全灭的数码管填充右边,直至全部变灭,然后再一次从右边一个一个的点亮。状态为01234512345X2345XX345XXX45XXXX5XXXXXXXXXXXXXXXX0XXXX01XXX012XX0123X01234012345,其中“X”表示数码管不显示。4、 实验原理多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率大于50HZ,将看不到闪烁现象。如下图10-1,是多个数码管动态扫描显示的电路连接图。当闪烁显示的发光二极管闪烁频率较高时我们将观察到持续点亮的现象。同理,当多个数码管依次显示,当切换速度够快时,我们将观察到所有数码管都是同事在显示。一个数码管要稳定显示要求显示频率50hz,那么6个数码管则需要50*6=300hz以上才能看到持续稳定点亮的现象。cat1cat6是数码管选通控制信号,分别对应于6个共阴极数码管的公共端,当catn=0时,其对应的数码管被点亮。因此,通过控制cat1cat6,就可以控制6个数码管循环依次点亮。5、 代码及仿真波形图1实现六个数码管串行扫描电路的思路及代码:串行数码管library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity jxhchuanxing is port( clear,clk_in:in std_logic; num:out std_logic_vector(6 downto 0); cat:out std_logic_vector(5 downto 0) ); end jxhchuanxing; architecture one of jxhchuanxing is signal status:integer range 0 to 6;begin process(clk_in)begin if clear=0 then status=0; elsif (clk_inevent and clk_in=1) then if status=6 then status=1; else status num=1111110;cat num=0110000;cat num=1101101;cat num=1111001;cat num=0110011;cat num=1011011;catnum=0000000;caten=011111;ben=101111;ben=110111;ben=111011;ben=111101;ben=111110;bnull;end case;end process p1; p2:process(clk)beginif clkevent and clk=1thenif a=5 then a=0;d=1+d;else a=a+1;end if ;if d=2999 then d=0;c z z z z z zz=0000000; end case;end process p3; end;仿真波形:仿真波形分析:有图可以看出,数码管滚动显示功能得以正常实现。随着时钟的输入,数码管的输出进行着滚动式变化。电路图:端口连接图:Clk接18口,是时钟输入,en5-0是每个数码管各自的绑定,根据板子上的串口数字绑定,z6-0是数码管的每一个亮的部分,根据板子上的提示串口进行绑定,根据编程可以实现让数码管显示不同的数字。五、故障及问题分析 实验一在本次实验中,由于实验较为简单,只要认真听老师讲课,细心实验,基本没有大的故障出现。出现的问题主要为 当输入频率较高时,输出结果易受器件延迟时间影响。此外,对于多输入的电路,静态功能冒险还是会存在的,在某些情况下应该加入选通脉冲来消除静态功能冒险。实验二1. 注意VHDL文件名与实体名一致,会导致编译的错误。我在实验的过程中发生过这种错误。2. 在仿真波形的时候,没有合适的取好输入信号的周期,导致最终的波形超过了一个半有效周期,经老师指出进行了修改。3. 下载到板子上程序之前需要绑定串口,绑定完串口之后需要二次编译,否则功能不能实现。实验三1.每次实验中都应该注意到VHDL的文件名应与实体名一致,如果不一致编译会报错。我在实验过程中虽然原理图设计名与工程名相同,但在其后某程序名上犯了错误,导致出错。2.在仿真波形的观察中,一定要调节好zoom一选项,缩放出便于观察的波形。3.在命名过程一定要注意规范,不要出现非法字符。4.在做10进制计数器时,由于板的固有频率为晶振的频率50兆赫兹,所以当以微秒级的时钟去自动跳变太快根本无法看清,应该加一段程序令时钟在微秒级跳变25兆次时外部时钟输出,从而令外部时钟变为秒级的,才能看见自动跳变现象。实验四1. 注意VHDL文件名和各个名字一致否则会出现编译错误。2. 板子的固有频率是50m,所以需要进行分频,数码管的实验的时候频率的高低会导致数码管显示结果的不同,要根据实际情况适当的调高调低。我在做实验的时候频率选择不合适,数码管显示不好。3. 时钟信号是高频有效还是低频有效,需要注意,我实验的时候没有太搞清楚。4. 数码管的滚动显示的时候总是出错,经过检查,是下载之前绑定串口有误,还有分频并不合适。最终实验时候时间有限,验收的是数码管的串行。6、 总结和结论 总结: 实验一:实验一是进行了简单的图形连接来进行电路的实现,总体来说较为简单,但是要注意元器件的调用,还有连接的规范,使得连接出来的电路清晰明了,简单美观。仿真的时候注意总时间的选取和输入变量的周期。实验二:实验二是第一次进行VHDL编程,需要注意的是文件名和各个实体名一致否则会导

温馨提示

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

评论

0/150

提交评论