1、北邮数字电路与逻辑设计实验报告综述北京邮电大学数字电路与逻辑设计实验报告学院: 班级: 姓名: 学号: 实验一 Quartus II原理图输入法设计与实现一、实验目的:(1) 熟悉Quartus II原理图输入法进行电路设计和仿真;(2) 掌握Quartus II 图形模块单元的生成与调用;(3) 熟悉实验板的使用;二、实验所用器材:(1) 计算机;(2) 直流稳压电源;(3) 数字系统与逻辑设计实验开发板。三、实验任务要求 (1) 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。(2) 用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实
2、验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。(3) 用3线-8线译码器(74LS138)和逻辑门设计实现函数 ,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 四、 实验原理图及仿真波形图(1) 半加器 半加器原理图仿真波形仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。 (2)全加器全加器原理图 仿真波形仿真波形图分析 :根据仿真波形对比半加器真值表,可以确定电路实现了全加器的功能(2) 74138 3线-8线译码器 原理图
3、 仿真波形图 仿真波形图分析 ;当且仅当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进制奇校验器。四、 实验代码
4、及仿真波形图数码管译码器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
5、 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
6、 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)熟悉不同的编码及其之间的转换
7、。二、实验所用器材:(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
8、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
9、;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
10、 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;仿真波形仿真波形分析:分频器将
11、频率分开,置零端正常工作,根据仿真波形可以看出来,分频器的功能得以正常实现。组合电路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;BE
12、GIN 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
13、: 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_
14、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)BEGINcbb
15、bbbbbbbbbain,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
16、 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.计算
17、机:装有Quartus软件,为VHDL语言提供操作场所。2.直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。3.数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。三、实验任务要求 1. 用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上。2. 用VHDL语言设计并实现六个数码管滚动显示电路。(1) 循环左滚动,始终点亮6个数码管,左出右进。状态为:012345123450234501345012450123501234012345(2)向左滚动,用全灭的数码管填充右边,直至全部变灭,然后
18、再一次从右边一个一个的点亮。状态为01234512345X2345XX345XXX45XXXX5XXXXXXXXXXXXXXXX0XXXX01XXX012XX0123X01234012345,其中“X”表示数码管不显示。4、 实验原理多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率大于50HZ,将看不到闪烁现象。如下图10-1,是多个数码管动态扫描显示的电路连接图。当闪烁显示的发光二极管闪烁频率较高时我们将观察到持续点亮的现象。同理,当多个数码管依次显示,当切换速度够快时,我们将观察
19、到所有数码管都是同事在显示。一个数码管要稳定显示要求显示频率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 por
20、t( 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