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

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上北京邮电大学实 验 报 告实验名称:数电实验 学 院:信息与通信工程学院 班 级: 姓 名: 学 号: 日 期:2015年5月 专心-专注-专业目录1、 实验一.4 (1)实验名称和任务要求.4 (2)原理图.4 (3)仿真波形及分析.52、 实验二 .5 (1)实验名称和任务要求.5 (2)VHDL代码.6 (3)模块连接图.8 (4)仿真波形及分析.83、 实验三.9 (1)实验名称和任务要求.9 (2)VHDL代码.10 (3)连接VHDL代码.11 (4)图形模块.12 (5)仿真波形及分析.12 (6)端口说明.134、 实验四.13 (1)实验名称和任务要

2、求.13 (2)VHDL代码.13 (3)图形模块.16 (4)仿真波形及分析.18 (5)端口说明.215、 故障及问题分析.216、总结.21一:实验一1、 实验名称和任务要求实验名称: Quartus2原理图输入法设计 实验目的: 1、熟悉用Quartus2原理图输入法进行电路设计和仿真2、掌握Quartus2图形模块单元的生成与调用 3 、熟悉实验板的使用实验内容: 1 、用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图 形模块单元。 2 、用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真 验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二

3、极管显示输出信号。 3 、用3线-8线译码器(74LS138)和逻辑门设计实现函数 F=/C/B/A+/CB/A+C/B/A+CBA,仿真验证其功能,并下载到实验板测试。要 求用拨码开关设定输入信号,发光二极管显示输出信号。 2、原理图 (1)半加器 (2)全加器 (3)译码器3、仿真波形及分析 仿真波形: (1)全加器 (2)译码器 分析: (1)全加器:当全加器2个输入端都为0时,即a=b=0时,若低位进位输入cnp=0,则Si=0,进位输出端cn=0。若低位进位输入cnp=1,则Si=1,进位输出端cn=0. 当全加器2个输入端有一个为1时,即a =0,b=1或a=1,b=0时,若低位

4、进位 输入cnp=0,则Si=1,进位输出端cn=0。若低位进位输入cnp=1,则S=0,进位输出端cn=1.当全加器2个输入端都为1时,即a=b=1时,若低位进位输入cnp=0,则Si=0,进位输出端cn=1。若低位进位输入cnp=1,则Si=1,进位输出端cn=1. (2)译码器:当输入zhi=0时,译码器不工作,当输入为1时,译码器正常工作;当输入信号a2a1a0=000,010,100,111时输出f=1;其他情况f=0。二:实验二1、实验名称和任务要求实验名称: VHDL组合逻辑电路设计 实验目的: 1、熟悉用VHDL语言设计组合逻辑电路的方法2、 熟悉用Quartus2文本输入法进

5、行电路设计3、 熟悉不同的编码及其之间的转换 实验内容: 1 、用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能, 并下载到实验板测试。要求用拨码开关设定输入信号,7段数码管显示输出信 号。 2 、用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证 其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显 示输出信号。 3 、用VHDL语言设计实现一个4位二进制奇校检验器,输入奇数个1 时,输出为1,否则输出为0,仿真验证其功能,并下载到实验板测 试,要求用拨码开关设定输入信号,发光二极管显示输出信号。2、VHDL代码 (1)数码管library

6、 ieee;use ieee.std_logic_1164.all;entity seg isport(a:in std_logic_vector (3 downto 0);b:out std_logic_vector (6 downto 0);end seg;architecture sega of seg isbeginprocess(a)begin case a iswhen "0000"=>b<=""-0when "0001"=>b<=""-1when "0010"

7、;=>b<=""-2when "0011"=>b<=""-3when "0100"=>b<=""-4when "0101"=>b<=""-5when "0110"=>b<=""-6when "0111"=>b<=""-7when "1000"=>b<=""

8、-8when "1001"=>b<=""-9when others =>b<=""end case;end process;end;(2)8421码转换为余3码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity guo is port (a:in std_logic_vector (3 downto 0);b:out std_logic_vector (3 downto 0);end;architectu

9、re guoa of guo isbeginprocess(a)begin if a<"1010"then b<=a+"0011" else b<="0000" end if;end process;end;(3)奇校检验器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jing isport(a:in std_logic_vector (3 downto 0);b:out std_logic);end j

10、ing;architecture jinga of jing isbeginprocess(a)begin if a ="0001" then b<='1'elsif a = "0010"then b<='1'elsif a ="0100" then b<='1'elsif a ="1000"then b<='1'elsif a ="1110" then b<='1'elsif a =&

11、quot;1101" then b<='1'elsif a ="1011"then b<='1'elsif a ="0111" then b<='1'else b<='0'end if;end process;end;3、模块连接图4、仿真波形及分析分析: 8421码转余3码:当输入a3a2a1a0小于或等于1001时,输出b3b2b1b0=a3a2a1a0+0011,其余情况输出为0000; 奇校检验器:当输入a3a2a1a0为0001,0010,0100

12、,1000,0111,1011,1101,1110时,输出b=1,其余输出为0; 数码管:利用输出b7与offset、offset4、offset5、offset6、offset7控制只有一个数码管亮,当输入a3a2a1a0=0000时 输出b6b5b4b3b2b1b0=;a3a2a1a0=0010时 输出b6b5b4b3b2b1b0=;a3a2a1a0=0011时 输出b6b5b4b3b2b1b0=;a3a2a1a0=0100时 输出b6b5b4b3b2b1b0=;a3a2a1a0=0101时 输出b6b5b4b3b2b1b0=;a3a2a1a0=0110时 输出b6b5b4b3b2b1b0

13、=;a3a2a1a0=0111时 输出b6b5b4b3b2b1b0=;a3a2a1a0=1000时 输出b6b5b4b3b2b1b0=;a3a2a1a0=1001时 输出b6b5b4b3b2b1b0=;其他情况输出为。三:实验三1、实验名称和任务要求实验名称: VHDL时序逻辑电路设计 实验目的: 1、熟悉用VHDL语言设计时序逻辑电路的方法 2、熟悉计数器的设计与应用 3、熟悉用Quartus2文本输入法进行电路设计4、 熟悉不分频器懂的设计方法 实验内容: 1 、用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证 其功能,并下载到实验板测试。要求用拨码开关设定输入信号,

14、发光二极管显 示输出信号。 2 、用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的 分频器。要求在Quartus2平台上设计程序并仿真验证设计。2、 VHDL代码(1) 计数器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY guo IS PORT( CLK,CLEAR:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END guo;ARCHITECTURE a OF guo IS SIGNAL tem

15、p:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLEAR)BEGINIF CLEAR='1' THEN temp<="0000" ELSIF(CLK'EVENT AND CLK='1') THEN IF temp<"1001" THEN temp<=temp+1; ELSE temp<="0000" END IF;END IF;END PROCESS;Q<=temp;END a;(2)分频器library ieee;

16、use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jing isport(clk:in std_logic;clear:in std_logic;q:out std_logic);end jing;architecture jinga of jing issignal b :integer range 0 to 5;signal cl:std_logic;beginprocess(clear,clk)beginif clear='1' thenb<=0;cl<='0'

17、elsif clk' event and clk='1' thenif b=5 then b<=0;cl<=not cl;elseb<=b+1;end if;end if;end process;q<=cl;end jinga;3、连接VHDL代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY feng IS PORT(feng_clear,feng_rest,feng_clk:in STD_LOGIC; feng_out:out ST

18、D_LOGIC_VECTOR(6 DOWNTO 0); feng:out STD_LOGIC_VECTOR(5 DOWNTO 0); END feng; ARCHITECTURE abc OF feng ISCOMPONENT jing PORT(clk:IN STD_LOGIC; clear:IN STD_LOGIC; q:OUT STD_LOGIC); END COMPONENT;COMPONENT guoPORT(clk,clear:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT segPO

19、RT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT;SIGNAL x:STD_LOGIC;SIGNAL y:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN u1:jing PORT MAP(clear=>feng_clear,clk=>feng_clk,q=>x); u2:guo PORT MAP(clk=>x,clear=>feng_rest,q=>y); u3:seg PORT MAP(a=>y,b=&g

20、t;feng_out); feng<=""END abc;4、图形模块5、仿真波形及分析(1)计数器(2)分频器(3)组合分析: 计数器:当clear=1时,输出置0;当clear=0时,计数器开始计数,从0000计数到1001,当输出为1001时,输出0000; 分频器:当clear=1时,输出为0;当clear为0时,每6个时钟变换一次状态。6、端口说明feng_clear:分频器置0端feng_rest:计数器复位端feng_clk:时钟feng_out:输出到数码管feng:控制数码管端四:实验四1、实验名称和任务要求实验名称: 数码管扫描显示控制器设计与实现

21、 实验目的: 1、掌握VHDL语言的语法规范,掌握时序电路描述方法 2、掌握多个数码管动态扫描显示的原理及设计方法 实验内容: 1、用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。 2、用VHDL语言设计并实现六个数码管滚动显示电路。(1)循环滚动,始终点亮6个数码管,左出右进。状态为:(2)向左滚动,用全灭的数码管充右边,直至全部变灭,然后再依次从右边一个一个地点亮。状态为:12345X2345XX345XXX45XXXX5XXXXXXXXXXXXXXXX0XXXX01XXX012XX0123X0123

22、4,其中X表示数码管不显示。2、VHDL代码1、library ieee;use ieee.std_logic_1164.all;entity shu isport(clk:in std_logic;a:out std_logic_vector (5 downto 0);b:out std_logic_vector (6 downto 0);end shu;architecture shua of shu issignal i: integer range 1 to 6;beginprocess(clk)begin if (clk' event and clk='1')

23、then if i=6 then i<=1;else i<=i+1;end if ;end if;end process;process(i)begin case i iswhen 1=>b<=""a<=""-1when 2=>b<=""a<=""-2when 3=>b<=""a<=""-3when 4=>b<=""a<=""-4when 5=>b

24、<=""a<=""-5when 6=>b<=""a<=""-6end case;end process;end;2、(1)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shum is port ( clk,start:in std_logic; cat:out std_logic_vector(5 downto 0); outlight:out std_logic_vect

25、or (6 downto 0) ); end shum; architecture a of shum is signal count:integer range 0 to 6; signal lightline:integer range 0 to 5; begin process(clk) variable countlight:integer range 0 to ; begin if (start='1')then if (clk'event and clk='1') then case count is when 0=> cat<=

26、""lightline<=(countlight/50000)mod 6); when 1=> cat<=""lightline<=(countlight/50000 +1)mod 6); when 2=> cat<=""lightline<=(countlight/50000 +2)mod 6); when 3=> cat<=""lightline<=(countlight/50000 +3)mod 6); when 4=> cat<=&qu

27、ot;"lightline<=(countlight/50000 +4)mod 6); when 5=> cat<=""lightline<=(countlight/50000 +5)mod 6); when others => cat<=""lightline<=0; end case; count <= count+1; countlight:= countlight+1; end if; if (count=6) then count<=0; end if; if (countligh

28、t=)then countlight:=0; end if; end if; case lightline is when 0=> outlight<="" when 1=> outlight<="" when 2=> outlight<="" when 3=> outlight<="" when 4=> outlight<="" when 5=> outlight<="" when others =&g

29、t; outlight<="" end case; end process; end;2、(2)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shuma is port ( start,clk:in std_logic; cat:out std_logic_vector(5 downto 0); outlight:out std_logic_vector (6 downto 0) ); end shuma; architecture a of shuma

30、is signal count:integer range 0 to 6; signal lightline:integer range 0 to 12; begin process(clk) variable countlight:integer range 0 to ; begin if (start='1') then if (clk'event and clk='1') then case count is when 0=> cat<=""lightline<=(countlight/50000)mod 12

31、); when 1=> cat<=""lightline<=(countlight/50000 +1)mod 12); when 2=> cat<=""lightline<=(countlight/50000 +2)mod 12); when 3=> cat<=""lightline<=(countlight/50000 +3)mod 12); when 4=> cat<=""lightline<=(countlight/50000 +4)mo

32、d 12); when 5=> cat<=""lightline<=(countlight/50000 +5)mod 12); when others => cat<=""lightline<=6; end case; count <= count+1; countlight := countlight+1; end if; if (count=6) then count<=0; end if; if (countlight=)then countlight:=0; end if; case lightli

33、ne is when 0=> outlight<="" when 1=> outlight<="" when 2=> outlight<="" when 3=> outlight<="" when 4=> outlight<="" when 5=> outlight<="" when others => outlight<="" end case; end if; end

34、process; end; 3、图形模块 1、2、 (1)2、(2) 4、仿真波形及分析1、2、(1)2、 (2)分析:1、六个数码管串行扫描,b分别对应着数码管的7段,数码管高电平为亮,低电平暗。a为低电平时,数字n即通过b显示。比如,数字5,a为“”b=“”。只要数码管闪烁频率足够高,就可以看到六个数码管分别显示16六个不同的数字。2、(1)因为要实现的是循环左滚动,且状态转移的顺序是->->->->->->共六个状态,仿真图截取了其中前三个状态及 发光二极管管脚的变化情况.输入时钟信号后,6个数码管的选通控制端在同一时刻始终保持一个低电平其余高电平,在0-5对应的数码管上输出实验设定的数字并且由地位向高位依次循环移动. 2、(2)仿真图中截取了前三个状态,当时钟clk变化5000周期之后,波形就转到下一个状态;状态转移关系: ->12345X->2345XX->345XXX-&g

温馨提示

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

评论

0/150

提交评论