2016年北邮数电实验报告
北邮数字电路综合实验报告
数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求:1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。
通过密码设置确定键(BTN 键)进行锁定。
2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。
输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。
3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。
闭锁状态下不能清除密码。
4、用点阵显示开锁和闭锁状态。
提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。
2、密码锁的密码位数(4~6 位)可调。
3、自拟其它功能。
二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。
以下进行详细介绍。
1.键盘模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。
键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
北邮数字电路综合实验报告
数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求:1、密码设置:通过键盘进行 4 位数字密码设定输入,在数码管上显示所输入数字。
通过密码设置确定键(BTN 键)进行锁定。
2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。
输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。
3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。
闭锁状态下不能清除密码。
4、用点阵显示开锁和闭锁状态。
提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。
2、密码锁的密码位数(4~6 位)可调。
3、自拟其它功能。
二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。
以下进行详细介绍。
1.键盘模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。
键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
北邮2016通信原理硬件实验报告
北邮2016通信原理硬件实验报告电子工程学院通信原理硬件实验报告指导教师:实验日期:目录实验一双边带抑制载波条幅 (3)实验二:具有离散大载波的双边带调幅 (8)实验六:眼图 (13)实验七:采样、判决 (14)实验八:二进制通断键控 (17)实验十二:低通信号的采样与重建 (20)实验总结 (24)实验一双边带抑制载波条幅(DSB-SC AM)一、实验目的(1)了解DSB-SC AM信号的产生以及相干解调的原理和实现方法;(2)了解DSB-SC AM信号波形以及振幅频谱特点,并掌握其测量方法;(3)了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法;(4)掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。
二、实验原理AM信号的产生及相干解调原理框图如图1.1(输出图1.1由图知,锁相环乘法器的输出为:经过锁相环反馈,相干解调时与恢复载波想成,则,经过LPF、隔直流后,输出为.四、实验步骤SC-DSB 信号的数学表达式为s(t)=Acm(t)cos(Wct),这个实验产生SC-DSB 的方法很简单,就是用载波跟调制信号直接相乘,其中载波是由主振荡器产生为幅度为1V,频率为100KHZ的正弦波,而调制信号由音频振荡器产生的正弦信号再经缓冲放大器组成,幅度为1V,频率为1KHZ。
1)按照图连接,将音频振荡器输出的模拟音频信号及主振荡器输出的100KHz模拟载频信号分别用连接线连至乘法器的两个输出端;2)用示波器观看音频输出信号的信号波形的幅度以及振荡频率,调整音频信号的输出频率为10kHz,作为均值为0的调制信号m(t);3)用示波器观看主振荡器输出信号的幅度以及振幅频谱;4)用示波器观看乘法器的输出波形,并注意已调信号波形的相位翻转与已调信号波形;5)测量已调信号的波形频谱,注意其振幅频谱的特点;6)调整增益G=1:将加法器的B 输出端接地,A 输入端接已调信号,用示波器观看加法器的输出波形以及振幅频谱,使加法器输入与加法器输出幅度一致;7)调整增益g;加法器A 端接已调信号,B 接导频信号。
北邮数电实验报告
北邮数电实验报告北邮数电实验报告一、引言数电实验是电子信息类专业学生必修的一门实验课程,通过实践操作,帮助学生巩固理论知识,培养实际动手能力。
本次实验旨在通过设计和搭建一个简单的数字电路,来理解数字电路的基本原理和工作方式。
二、实验目的本次实验的目的是设计一个4位二进制加法器,实现两个4位二进制数的相加运算。
通过实验,我们可以加深对于数字电路的理解,掌握数字电路的设计和搭建方法。
三、实验原理1. 二进制加法器二进制加法器是一种用于计算二进制数相加的数字电路。
它由若干个逻辑门和触发器组成,可以实现二进制数的加法运算。
在本次实验中,我们将设计一个4位二进制加法器,即可以计算两个4位二进制数的相加结果。
2. 逻辑门逻辑门是数字电路中常用的基本元件,用于实现逻辑运算。
常见的逻辑门有与门、或门、非门、异或门等。
在本次实验中,我们将使用与门和异或门来构建4位二进制加法器。
四、实验步骤1. 设计4位二进制加法器的电路图根据实验要求,我们需要设计一个能够计算两个4位二进制数相加的电路。
首先,我们可以将两个4位二进制数分别用D0~D3和E0~E3表示,其中D0和E0分别为最低位。
然后,我们需要使用与门和异或门来实现加法器的功能。
通过逻辑运算,我们可以得到每一位的和以及进位。
最后,将每一位的和连接起来,即可得到最终的结果。
2. 搭建电路根据电路图,我们可以开始搭建实验电路。
首先,将所需的逻辑门和触发器连接起来,形成一个完整的电路。
然后,将所需的输入信号和电源连接到电路上。
最后,使用示波器等工具检查电路的工作状态,确保电路正常运行。
3. 进行实验测试在搭建好电路后,我们可以进行实验测试。
首先,将两个4位二进制数的输入信号连接到电路上。
然后,通过观察输出信号,判断电路是否正确计算了两个二进制数的相加结果。
如果输出信号与预期结果一致,说明电路设计和搭建成功。
五、实验结果与分析在进行实验测试后,我们可以得到实验结果。
通过观察输出信号,我们可以判断电路是否正确计算了两个二进制数的相加结果。
北邮-数电实验报告
北邮-数电实验报告数字电路实验报告学院:信息与通信工程专业:信息工程班级:2013211125学号:2013210681姓名:袁普实验一:QuartusⅡ原理图输入法设计与实现一:实验要求①:用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
②:用实验一生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
③:用3线—8线译码器和逻辑门设计实现函数F,仿真验证其功能,下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
二:报告内容①:实验一(2)的原理图用两个已经生成的半加器图形模块单元和一个双输入或门即可实现全加器②:仿真波形图以及分析波形图:波形分析:通过分析ab ci三个输入在8中不同组合下的输出,发现与全加器的真值表吻合,说明实现了全加器的逻辑功能。
同时看见波形中出现了毛刺(冒险),这也与事实一致。
③:故障及问题分析第一次在做全加器的时候发现找不到已经生成的半加器模块,后来发现是因为在建立工程时这两个项目没有建在同一个文件夹里,在调用的时候就找不到。
后来我将全加器工程建在同一个文件夹里解决了此问题。
实验二:用VHDL设计和实现组合逻辑电路一:实验要求①:用VHDL设计一个8421码转换为格雷码的代码转换器,仿真验证其功能。
②:用VHDL设计一个4位二进制奇校验器,要求在为奇数个1时输出为1,偶数个1时输出为0,仿真验证其功能。
③:用VHDL设计一个数码管译码器,仿真验证其功能,下载到实验板测试,要求用拨码开关设定输入信号,数码管显示输出信号,并且只使一个数码管有显示,其余为熄灭状态。
二:故障及问题分析在刚开始实现让一个数码管显示的时候,我本来准备再设置6个输入和输出,通过实验板上的拨码来输入信息分别控制不同的数码管的的开闭状态,但是后来发现这样效率很低而且实验板上的拨码开关数量根本不够。
北邮数电综合实验报告
北邮数电综合实验报告综合实验报告:基于北邮数电实验的电子门禁系统设计与实现摘要:本次实验通过使用北邮数电实验室提供的器件和设备,设计并实现了一个简易的电子门禁系统。
该系统能够通过输入正确的密码或使用合法的身份卡,实现对门禁的控制和管理。
本文将详细介绍系统设计的原理、实验过程和结果,并对实验进行了总结和评价。
一、引言电子门禁系统是当前社会中广泛应用的一种重要安全保障设施。
它通过使用密码、身份卡等识别方式,对人员出入进行控制和管理。
本实验旨在通过北邮数电实验的学习和实践,学习和掌握电子门禁系统的设计与实现。
二、实验器材与原理实验器材:1.键盘2.蜂鸣器3.LCD显示屏4.数码安全码锁5.单片机开发板6.电源模块7.连线模块实验原理:该电子门禁系统的基本原理如下:1.用户通过键盘输入密码或刷合法的身份卡;2.单片机接收到输入的密码或读取身份卡信息;3.单片机对输入的密码或身份卡信息进行核对;5. 若核对失败,则控制蜂鸣器发出门禁错误提示音,并在LCD显示屏上显示“Access Denied”等拒绝信息。
三、实验过程与结果1.按照实验器材的接线要求,将键盘、蜂鸣器和LCD显示屏与开发板连接好;2.根据实验原理,编写相应的控制程序,并将程序烧录到单片机中;3.打开电源模块,开启电子门禁系统;4.用户通过键盘输入密码或刷合法的身份卡;5.系统接收到用户输入并进行核对;7. 核对失败时,蜂鸣器发出门禁错误提示音,LCD显示屏上显示“Access Denied”等拒绝信息。
实验结果显示,该电子门禁系统能够根据用户输入的密码或身份卡信息,进行核对并作出相应的操作。
当核对成功时,系统会解锁门禁并显示欢迎信息;当核对失败时,系统会发出错误提示并拒绝门禁。
四、实验总结本次实验通过设计和实现基于北邮数电实验的电子门禁系统,使得我们更加深入地了解了电子门禁系统的原理和应用。
通过实验,我们学会了利用键盘、蜂鸣器和LCD显示屏等器材,通过单片机控制,实现了一个简易的电子门禁系统。
2016年北邮数电实验报告 (1)
数字电路与逻辑设计实验报告学院:电子工程学院班级:姓名:学号:班内序号:目录(一)实验名称及实验任务要求 (1)(二)模块端口说明及连接图 (2)1.1实验三(3)模块端口说明 (2)1.2实验三(3)连接图 (2)2.1实验四模块端口说明 (2)2.2实验四连接图 (2)(三)原理图或VHDL代码 (3)1.实验一(2)原理图 (3)2.实验三(3)VHDL代码 (4)3.实验四VHDL代码 (7)(四)仿真波形 (10)1.实验一(2)仿真波形 (10)2.实验三(3)仿真波形 (11)3.实验四仿真波形 (11)(五)仿真波形分析 (11)1.实验一(2)仿真波形分析 (11)2.实验三(3)仿真波形分析 (11)3.实验四仿真波形分析 (11)(六)故障及问题分析 (12)(七)总结和结论 (13)(一)实验名称及实验任务要求实验一名称:QuartusII原理图输入法设计与实现实验任务要求:EDA基础实验1(1)、(2)、(3)必做,选做VHDL 实现加法器。
实验二名称:用VHDL设计与实现组合逻辑电路实验任务要求:四人表决器、8421码转格雷码、数码管译码器(下载测试)。
实验三名称:用VHDL设计与实现时序逻辑电路实验任务要求:分频器、8421十进制计数器、将分频器/8421十进制计数器/数码管译码器3个电路进行连接并下载。
实验四名称:用VHDL设计与实现相关电路实验任务要求:数码管动态扫描控制器、点阵扫描控制器。
(二)模块端口说明及连接图1.1实验三(3)模块端口说明cp:时钟信号输入;rst:8421十进制计数器异步置位;c[6...0]:七段二极管数码管显示;cat[7...0]:数码管显示。
1.2实验三(3)连接图2.1实验四模块端口说明cp:时钟信号输入;rst:8421计数器异步复位;lgt[6...0]:七段二极管数码管显示;cat[7...0]:数码管显示。
2.2实验四连接图(三)原理图或VHDL代码1.实验一(2)原理图半加器:全加器:2.实验三(3)VHDL代码//分频器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div_12 isport(cp: in std_logic;clk1: out std_logic);end div_12;architecture a of div_12 issignal tmp: integer range 0 to 11;beginprocess (cp)beginif (cp'event and cp='1') thenif tmp=11 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=5 then clk1<='0';else clk1<='1';end if;end if;end process;end a;//8421十进制加法器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jisuqi8421 isport(clk2,rst: in std_logic;q : out std_logic_vector(3 downto 0));end jisuqi8421;architecture a of jisuqi8421 issignal q_temp:std_logic_vector (3 downto 0); beginprocess(clk2,rst)beginif (rst='1') thenq_temp<="0000";elsif (clk2'event and clk2='1') thenif q_temp>="1001" then q_temp<="0000";elseq_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_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yimaguan ISPORT(a: IN STD_LOGIC_VECTOR (3 downto 0);b: OUT STD_LOGIC_VECTOR (6 downto 0);cat: out std_logic_vector(7 downto 0));end yimaguan;ARCHITECTURE seg7_1_arch OF yimaguan ISBEGINPROCESS(a)BEGINCASE a ISWHEN"0000" => b <="1111110"; --0WHEN"0001" => b <="0110000"; --1WHEN"0010" => b <="1101101"; --2WHEN"0011" => b <="1111001"; --3WHEN"0100" => b <="0110011"; --4WHEN"0101" => b <="1011011"; --5WHEN"0110" => b <="1011111"; --6WHEN"0111" => b <="1110000"; --7WHEN"1000" => b <="1111111"; --8WHEN"1001" => b <="1111011"; --9WHEN OTHERS => b <="0000000";END CASE;END PROCESS;cat<="11101111";END;//整体显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display isport(cp,rst: in std_logic;c:out std_logic_vector(6 downto 0);cat: out std_logic_vector(7 downto 0));end display;architecture r of display iscomponent div_12port(cp:in std_logic;clk1:out std_logic);end component;component jisuqi8421port(clk2,rst:in std_logic;q:out std_logic_vector(3 downto 0));end component;component yimaguanport(a:in std_logic_vector(3 downto 0);b:out std_logic_vector(6 downto 0);cat: out std_logic_vector(7 downto 0));end component;signal x:std_logic;signal y:std_logic_vector(3 downto 0);beginu1:div_12 port map(cp=>cp,clk1=>x);u2:jisuqi8421 port map(clk2=>x,rst=>rst,q=>y); u3:yimaguan port map(a=>y,b=>c,cat=>cat);end r;3.实验四VHDL代码//分频器分频部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div isport(cp: in std_logic;clk1: out std_logic);end div;architecture a of div issignal tmp: integer range 0 to 49; beginprocess (cp)beginif (cp'event and cp='1') thenif tmp=49 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=25 then clk1<='0';else clk1<='1';end if;end if;end process;end a;//计数器计数部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity count isport(clk,rst: in std_logic;q : out std_logic_vector(3 downto 0));end count;architecture a of count issignal temp:std_logic_vector (3 downto 0); beginprocess(clk,rst)beginif (rst='1') thentemp<="0000";elsif (clk'event and clk='1') thenif temp>="0101" then temp<="0000";elsetemp<=temp+1;end if;end if;end process;q<=temp;end a;//译码管显示部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity yimaqi isport(a:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end entity;architecture rtl of yimaqi isbeginprocess(a)begincase a iswhen "0000"=>led<="1111110"; cat<="11111110"; --0when "0001"=>led<="0110000"; cat<="11111101"; --1when "0010"=>led<="1101101"; cat<="11111011"; --2when "0011"=>led<="1111001"; cat<="11110111"; --3when "0100"=>led<="0110011"; cat<="11101111"; --4when "0101"=>led<="1011011"; cat<="11011111"; --5when others=>led<="0000000"; cat<="11111111";end case;end process;end;//合成数码管显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity show isport(cp:in std_logic;rst:in std_logic;lgt:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end entity;architecture rtl of show iscomponent divport(cp : in std_logic;clk1: out std_logic);end component;signal x:std_logic;component countport(clk,rst: in std_logic;q : out std_logic_vector(3 downto 0));end component;signal y:std_logic_vector(3 downto 0);component yimaqiport(a :in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end component;beginu0:div port map (cp=>cp,clk1=>x);u1:count port map(clk=>x,rst=>rst,q=>y);u2:yimaqi port map(a=>y,cat=>cat,led=>lgt); end rtl;(四)仿真波形1.实验一(2)仿真波形2.实验三(3)仿真波形3.实验四仿真波形(五)仿真波形分析1.实验一(2)仿真波形分析a,b,ci均为输入信号,s,co为输出信号其逻辑功能为:s=a xor b xor cico=( ( a xor b ) and ci ) or (a and b ) 2.实验三(3)仿真波形分析rst,cp均为输入信号,c,cat为输出信号。
北邮数电实验报告
北京邮电大学实验报告实验名称: 数电电路与逻辑设计实验学院:信息与通信工程学院班 级: 姓 名: 学 号: 班内序号:日期:一. 实验一:QuartusII 原理图输入法设计1. 实验名称和实验任务要求(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块 元。
(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号入信号。
(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数F=A B C +A B C +AB C +A B C 。
2.实验原理图及波形图(1)半加器(2)全加器(3)74LS383.仿真波形图分析(1)半加器:输入为a,b,输出S,CO(进位)。
当ab都为0时,半加和s=0,进位端co=0。
当ab都为1时,半加和s=0,进位端co=1。
当a=1,b=0或a=0,b=1时,半加和s=1,进位端co=0。
(2)全加器:输入a,b,输出S,CO(进位),ci(低进位)。
当a=0,b=0,ci=0,输出s=0,co=0。
当a=0,b=1或a=1,b=0又ci=0,输出s=1,co=0。
当a=0,b=0,ci=1,输出s=1,co=0。
(3)74LS138输入A,B,C,输出为3。
四个输出对应F中的四个最小项,Y0、Y2、Y4、Y7,以实现函数功能。
二.实验二:用VHDL设计与实现组合逻辑电路1.实验名称和实验任务要求(1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能。
要求用拨码开关设定输入信号,7段数码管显示输出信号。
(2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个’1’时,输出为’1’,否则输出’0’,仿真验证其功能。
北邮数电实验报告(猜数字)
题目: 简易猜数字游戏机的设计与实现姓名学院专业班级学号班内序号一、设计课题的任务要求基本要求:1、游戏规则:通常由两个人玩,一方出数字,另一方猜。
出数字的人要想好一个没有重复数字的 4 位数,不能让猜的人知道。
2、数字设置:通过 4*4 键盘进行 4 位数字输入,在数码管(DISP0~DISP3)上显示当前所输入的数字。
通过设置确定键(BTN1 键)进行锁定,此时数码管上的数值消失,同时用点阵开始倒计时,即:初始状态点阵全亮,然后从右下角开始,由右到左、由下到上逐点逐排依次熄灭,间隔时间为 1s,共计 64s。
3、猜数字:可以通过 4*4 键盘进行 4 位数字输入进行猜数字,且每输入一位数字在数码管(DISP0~DISP3)上显示当前所输入的数字,按确定键(BTN2 键)进行确认,此时要根据输入的这组数字给出几 A 几 B,其中:A前面的数字表示位置正确的数的个数,用DISP5显示B前的数字表示数字正确而位置不对的数的个数,用DISP4显示如正确答案为 2134,而猜的人猜 5314,则是1A2B,其中有一个4的位置对了,记为1A,而1和3这三个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B 接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。
4、若数字正确则显示猜数字成功,点阵显示“☺”笑脸;若输入数字错误系统仍然处于猜数字状态,点阵显示“X”,并用蜂鸣器或 led 闪烁报警。
5、若到点阵全灭时(64s 结束)仍未猜出正确数字,游戏失败,点阵显示“囧”。
6、设置游戏机开关。
提高要求:1、若数字正确则显示猜数字成功,用蜂鸣器播放一段乐曲。
2、随机产生数字,并不在数码管上显示,进行猜数字游戏,用点阵进行 128s 计时,即点阵轮询熄灭两次,其他要求同基本功能3、4 和 5。
3、自拟其他功能。
二、系统设计设计思路:首先是状态机的设定,设定了5个状态,分别是idle、s1、s2、s3和over。
北邮电子-数电综合实验报告
数字电路综合实验设计简易出租车计价器的设计与实现学院:电子工程学院班级: 2011211203学号: 2011210876姓名:孙月鹏班内序号: 04摘要本文介绍了利用Quartus II综合性PLD/FPGA开发软件,在MAXII数字逻辑实验开发板上实现简易出租车计价器功能的设计与实现方法.本方案采用自上而下的设计理念,将整体电路按照功能划分为分频、计数、控制、数码管显示电路、点阵显示电路等若干模块,模块内用VHDL语言完成逻辑设计,模块间用原理图进行连接,使整体可实现计费、计时等功能。
关键字:可编程器件模块化设计出租车计价器VHDL语言一、设计任务要求➢设计一台出租车计价器,不同情况下具有不同的收费标准。
基本要求:1.行驶公里:用时钟2秒钟表示出租车匀速行驶1公里。
在行车5公里以内,按起步价13元收费,超过5公里部分,以每公里2元收费。
燃油附加费每运次1元。
2.途中等待:用按键控制中途等待,等待少于(包括)5秒不收费,超过5秒后没等待3秒钟加收1元。
3.用数码管分时显示计费金额、行驶里程和等候时间.字母A表示当前处于显示计费金额状态,字母B表示当前处于显示行驶里程状态,字母C表示当前处于显示等候时间状态。
4.用按键控制出租车空驶、载客状态。
提高要求:1.用点阵滚动显示收费单据.2.具有夜间模式,基本单价加收20%的费用.出租车收费以元为单位,元以下四舍五入。
3.出租车行驶速度可调可控.4.多人乘车,分段计价。
5.自拟其他功能。
二、设计思路与结构框图1。
设计思路图1 结构框图由结构框图可以分析得出,该系统的的主体是计数控制器。
该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。
该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出.因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。
数字电路实验报告_北邮
一、实验目的本次实验旨在通过实践操作,加深对数字电路基本原理和设计方法的理解,掌握数字电路实验的基本步骤和实验方法。
通过本次实验,培养学生的动手能力、实验技能和团队合作精神。
二、实验内容1. 实验一:TTL输入与非门74LS00逻辑功能分析(1)实验原理TTL输入与非门74LS00是一种常用的数字逻辑门,具有高抗干扰性和低功耗的特点。
本实验通过对74LS00的逻辑功能进行分析,了解其工作原理和性能指标。
(2)实验步骤① 使用实验箱和实验器材搭建74LS00与非门的实验电路。
② 通过实验箱提供的逻辑开关和指示灯,验证74LS00与非门的逻辑功能。
③ 分析实验结果,总结74LS00与非门的工作原理。
2. 实验二:数字钟设计(1)实验原理数字钟是一种典型的数字电路应用,由组合逻辑电路和时序电路组成。
本实验通过设计一个24小时数字钟,使学生掌握数字电路的基本设计方法。
(2)实验步骤① 分析数字钟的构成,包括分频器电路、时间计数器电路、振荡器电路和数字时钟的计数显示电路。
② 设计分频器电路,实现1Hz的输出信号。
③ 设计时间计数器电路,实现时、分、秒的计数。
④ 设计振荡器电路,产生稳定的时钟信号。
⑤ 设计数字时钟的计数显示电路,实现时、分、秒的显示。
⑥ 组装实验电路,测试数字钟的功能。
3. 实验三:全加器设计(1)实验原理全加器是一种数字电路,用于实现二进制数的加法运算。
本实验通过设计全加器,使学生掌握全加器的工作原理和设计方法。
(2)实验步骤① 分析全加器的逻辑功能,确定输入和输出关系。
② 使用实验箱和实验器材搭建全加器的实验电路。
③ 通过实验箱提供的逻辑开关和指示灯,验证全加器的逻辑功能。
④ 分析实验结果,总结全加器的工作原理。
三、实验结果与分析1. 实验一:TTL输入与非门74LS00逻辑功能分析实验结果表明,74LS00与非门的逻辑功能符合预期,具有良好的抗干扰性和低功耗特点。
2. 实验二:数字钟设计实验结果表明,设计的数字钟能够实现24小时计时,时、分、秒的显示准确,满足实验要求。
北邮 数电实验报告
北邮数电实验报告北邮数电实验报告数电实验是电子信息科学与技术专业的一门重要课程,通过实验可以帮助学生巩固理论知识,培养实践能力。
本次实验我们进行了基于数字逻辑电路的设计与实现,探索了数字电路的原理和应用。
以下是对本次实验的总结和分析。
1. 实验目的本次实验的主要目的是学习数字逻辑电路的设计与实现,了解数字电路的基本原理和应用。
通过实验,我们可以熟悉数字电路的搭建过程,掌握数字电路的设计方法和测试技巧。
2. 实验原理本次实验主要涉及到的数字逻辑电路有与门、或门、非门、异或门等。
这些逻辑门可以通过逻辑运算实现各种功能,如加法器、减法器、比较器等。
我们需要根据实验要求,设计并搭建相应的数字电路,然后通过示波器等仪器进行测试,验证电路的正确性。
3. 实验步骤首先,我们根据实验要求,设计了一个4位全加器电路。
通过逻辑门的组合,实现了4位二进制数的加法运算。
然后,我们搭建了一个4位比较器电路,用于比较两个4位二进制数的大小关系。
最后,我们设计了一个4位减法器电路,实现了4位二进制数的减法运算。
4. 实验结果通过实验,我们成功搭建了4位全加器、4位比较器和4位减法器电路,并进行了测试。
实验结果表明,我们设计的电路能够正确地完成加法、比较和减法运算,符合预期的逻辑规则。
5. 实验总结通过本次实验,我们深入了解了数字逻辑电路的设计与实现过程。
我们学会了使用逻辑门进行电路设计,并通过实验验证了电路的正确性。
实验过程中,我们也遇到了一些问题,如电路连接错误、示波器读数不准确等。
但通过仔细分析和调试,我们最终解决了这些问题,并取得了满意的实验结果。
6. 实验感想数电实验是一门非常重要的实践课程,通过实验我们不仅巩固了理论知识,还培养了实践能力和解决问题的能力。
在实验过程中,我们需要细心观察、仔细分析,并灵活运用所学的知识。
实验不仅考验了我们的动手能力,还锻炼了我们的思维能力和团队合作精神。
7. 实验的意义数电实验的意义在于将理论知识与实际应用相结合,帮助我们更好地理解和掌握数字电路的原理和应用。
北邮数电综合实验报告
北邮数电综合实验报告北邮数电综合实验报告一、实验目的与背景数电综合实验是北邮电子信息工程专业的重要实践环节,旨在通过实际操作,巩固和应用学生在数字电路、模拟电路、通信原理等相关课程中所学到的理论知识。
本实验报告将对数电综合实验的内容、过程和结果进行详细描述和分析。
二、实验内容本次数电综合实验的主要内容为设计一个数字电子钟。
该电子钟具备显示时间、日期、闹钟功能,并能实现闹钟的设置、开关控制等基本操作。
实验中,我们需要使用数字集成电路、显示模块、按键开关、时钟模块等元件进行电路设计和搭建。
三、实验过程1. 硬件设计与连接根据实验要求,我们首先进行电路设计。
根据数字电子钟的功能需求,我们需要选取适当的集成电路和模块。
通过分析电路原理图,我们将各个模块进行连接,保证信号的正确传递和控制。
2. 软件编程与调试在硬件连接完成后,我们需要进行软件编程。
通过使用C语言或者Verilog等编程语言,我们可以实现数字电子钟的各项功能。
在编程过程中,我们需要考虑到时钟频率、显示模块的控制、按键开关的响应等因素。
3. 实验调试与测试完成软件编程后,我们需要进行实验调试和测试。
通过连接电源,观察电子钟的各项功能是否正常工作。
如果发现问题,我们需要进行调试,找出问题所在,并进行修复。
四、实验结果与分析经过实验调试和测试,我们成功实现了数字电子钟的设计和搭建。
该电子钟能够准确显示时间和日期,并能根据用户的设置进行闹钟的开关和响铃。
通过实验过程,我们对数字电路的原理和应用有了更深入的理解。
五、实验心得与收获通过参与数电综合实验,我深刻体会到了理论与实践的结合的重要性。
在实验中,我们需要将课堂上所学的知识应用到实际中,通过实际操作来巩固和加深对知识的理解。
同时,实验中也锻炼了我们的动手能力和解决问题的能力。
在实验过程中,我们还学会了团队合作的重要性。
在设计和搭建电路的过程中,我们需要相互配合,互相帮助,共同解决问题。
通过与同学们的合作,我们不仅解决了实验中遇到的各种问题,还加深了与同学们的交流和友谊。
北邮数电实验报告
数字电路与逻辑设计实验报告一、要求要求:设计制作一个简易计算器,实现最大输入两位十进制数字的加减乘运算。
基本要求:1、实现最大输入两位十进制数字的加减乘运算;八个拨码开关按两位8421bcd码输入。
2、能够实现多次连算(无优先级,从左到右计算结果),如12+34×56-78=2498。
3、最大长度以数码管最大个数为限,溢出报警。
提高要求:1、有正负数区分。
2、实现除法(不能整除时小数保留2位有效数字)。
3、其它扩展功能。
二、系统设计:设计思路:1、将该程序进行分模块设计。
可以将程序分为:主程序、译码模块和防抖模块。
其中,主程序负责将输入的数据进行存储,对数据进行运算,将数据输出到数码上等;防抖模块负责对按键输入的数防抖;译码模块负责对输入的数据进行译码(由8421bcd码转化为十进制的编码)。
2、分模块进行相应模块的编写。
3、对编好的模块进行测试。
4、编写主程序并进行调试。
总体框图:流程图:分块设计:(按实际操作的分块)输入模块:由符号开关和拨码开关构成。
采用序列存储的方式存储相应的输入。
输入译码模块:将输入的符号序列转化成先用状态,以便选取对应的计算方法;将输入的8421bcd码转化成相应的两位十进制数。
数码显示模块:将寄存器内的数进行输出到数码管上。
显示所输入的第一个数以及最后的结果。
计算模块:调用相应的计算方式,对所输入的数进行计算。
防抖模块:在用按键输入时,所得到的信号可能会有抖动,因此加入此抖动电路。
三、仿真波形及波形分析:分析(波形仿真时,为了方便观察,将8421bcd码输入方式,该为了十进制的直接输入方式,并将输出,有原来的数码管显示改成了直接数字显示)由图中可以看出,当输入12 ,按下“确定”,数字就输入到了寄存器中,输入“+”号(对应仿真中的fuhao“100000”),在输入一个数35,按下“确定”,该计算器就件寄存器中的数与第二次输入的数进行相加,得到结果47。
此时该结果又被直接保存到了寄存器中,继续输入运算符“-”(对应仿真中得fuhao“010000”),输入第三个数18,按下“确定”,计算器对其做减法运算,得到结果29,该结果又在寄存器中存储着。
2016年北邮数电实验报告
数字电路与逻辑设计实验报告学院:电子工程学院班级::学号:班序号:目录(一)实验名称及实验任务要求 (1)(二)模块端口说明及连接图 (2)1.1实验三(3)模块端口说明 (2)1.2实验三(3)连接图 (2)2.1实验四模块端口说明 (2)2.2实验四连接图 (2)(三)原理图或VHDL代码 (3)1.实验一(2)原理图 (3)2.实验三(3)VHDL代码 (4)3.实验四VHDL代码 (7)(四)仿真波形 (10)1.实验一(2)仿真波形 (10)2.实验三(3)仿真波形 (11)3.实验四仿真波形 (11)(五)仿真波形分析 (11)1.实验一(2)仿真波形分析 (11)2.实验三(3)仿真波形分析 (11)3.实验四仿真波形分析 (11)(六)故障及问题分析 (12)(七)总结和结论 (13)(一)实验名称及实验任务要求实验一名称:QuartusII原理图输入法设计与实现实验任务要求:EDA基础实验1(1)、(2)、(3)必做,选做VHDL实现加法器。
实验二名称:用VHDL设计与实现组合逻辑电路实验任务要求:四人表决器、8421码转格雷码、数码管译码器(下载测试)。
实验三名称:用VHDL设计与实现时序逻辑电路实验任务要求:分频器、8421十进制计数器、将分频器/8421十进制计数器/数码管译码器3个电路进行连接并下载。
实验四名称:用VHDL设计与实现相关电路实验任务要求:数码管动态扫描控制器、点阵扫描控制器。
(二)模块端口说明及连接图1.1实验三(3)模块端口说明cp:时钟信号输入;rst:8421十进制计数器异步置位; c[6...0]:七段二极管数码管显示; cat[7...0]:数码管显示。
1.2实验三(3)连接图2.1实验四模块端口说明cp:时钟信号输入;rst:8421计数器异步复位;lgt[6...0]:七段二极管数码管显示;cat[7...0]:数码管显示。
2.2实验四连接图(三)原理图或VHDL代码1.实验一(2)原理图半加器:全加器:2.实验三(3)VHDL代码//分频器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div_12 isport(cp: in std_logic;clk1: out std_logic);end div_12;architecture a of div_12 issignal tmp: integer range 0 to 11;beginprocess (cp)beginif (cp'event and cp='1') then if tmp=11 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=5 then clk1<='0'; else clk1<='1';end if;end if;end process;end a;//8421十进制加法器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jisuqi8421 isport(clk2,rst: in std_logic;q : out std_logic_vector(3 downto 0) );end jisuqi8421;architecture a of jisuqi8421 issignal q_temp:std_logic_vector (3 downto 0); beginprocess(clk2,rst)beginif (rst='1') thenq_temp<="0000";elsif (clk2'event and clk2='1') thenif q_temp>="1001" then q_temp<="0000";elseq_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_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yimaguan ISPORT(a: IN STD_LOGIC_VECTOR (3 downto 0);b: OUT STD_LOGIC_VECTOR (6 downto 0); cat: out std_logic_vector(7 downto 0) );end yimaguan;ARCHITECTURE seg7_1_arch OF yimaguan ISBEGINPROCESS(a)BEGINCASE a ISWHEN"0000" => b <="1111110"; --0WHEN"0001" => b <="0110000"; --1 WHEN"0010" => b <="1101101"; --2 WHEN"0011" => b <="1111001"; --3 WHEN"0100" => b <="0110011"; --4 WHEN"0101" => b <="1011011"; --5 WHEN"0110" => b <="1011111"; --6 WHEN"0111" => b <="1110000"; --7 WHEN"1000" => b <="1111111"; --8 WHEN"1001" => b <="1111011"; --9 WHEN OTHERS => b <="0000000";END CASE;END PROCESS;cat<="11101111";END;//整体显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display isport(cp,rst: in std_logic;c:out std_logic_vector(6 downto 0); cat: out std_logic_vector(7 downto 0) );end display;architecture r of display iscomponent div_12port(cp:in std_logic;clk1:out std_logic);end component;component jisuqi8421port(clk2,rst:in std_logic;q:out std_logic_vector(3 downto 0) );end component;component yimaguanport(a:in std_logic_vector(3 downto 0);b:out std_logic_vector(6 downto 0);cat: out std_logic_vector(7 downto 0));end component;signal x:std_logic;signal y:std_logic_vector(3 downto 0);beginu1:div_12 port map(cp=>cp,clk1=>x);u2:jisuqi8421 port map(clk2=>x,rst=>rst,q=>y); u3:yimaguan port map(a=>y,b=>c,cat=>cat);end r;3.实验四VHDL代码//分频器分频部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div isport(cp: in std_logic;clk1: out std_logic);end div;architecture a of div issignal tmp: integer range 0 to 49; beginprocess (cp)beginif (cp'event and cp='1') thenif tmp=49 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=25 then clk1<='0';else clk1<='1';end if;end if;end process;end a;//计数器计数部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity count isport(clk,rst: in std_logic;q : out std_logic_vector(3 downto 0) );end count;architecture a of count issignal temp:std_logic_vector (3 downto 0); beginprocess(clk,rst)beginif (rst='1') thentemp<="0000";elsif (clk'event and clk='1') thenif temp>="0101" then temp<="0000";elsetemp<=temp+1;end if;end if;end process;q<=temp;end a;//译码管显示部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity yimaqi isport(a:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0); cat:out std_logic_vector(7 downto 0) );end entity;architecture rtl of yimaqi isbeginprocess(a)begincase a iswhen "0000"=>led<="1111110"; cat<="11111110"; --0when "0001"=>led<="0110000"; cat<="11111101"; --1when "0010"=>led<="1101101"; cat<="11111011"; --2when "0011"=>led<="1111001"; cat<="11110111"; --3when "0100"=>led<="0110011"; cat<="11101111"; --4when "0101"=>led<="1011011"; cat<="11011111"; --5when others=>led<="0000000"; cat<="11111111"; end case;end process;end;//合成数码管显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity show isport(cp:in std_logic;rst:in std_logic;lgt:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end entity;architecture rtl of show iscomponent divport(cp : in std_logic;clk1: out std_logic);end component;signal x:std_logic;component countport(clk,rst: in std_logic;q : out std_logic_vector(3 downto 0) );end component;signal y:std_logic_vector(3 downto 0);component yimaqiport(a :in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end component;beginu0:div port map (cp=>cp,clk1=>x);u1:count port map(clk=>x,rst=>rst,q=>y);u2:yimaqi port map(a=>y,cat=>cat,led=>lgt); end rtl;(四)仿真波形1.实验一(2)仿真波形2.实验三(3)仿真波形3.实验四仿真波形(五)仿真波形分析1.实验一(2)仿真波形分析a,b,ci均为输入信号,s,co为输出信号其逻辑功能为:s=a xor b xor cico=( ( a xor b ) and ci ) or (a and b ) 2.实验三(3)仿真波形分析rst,cp均为输入信号,c,cat为输出信号。
北邮数电综合实验报告
北邮数电综合实验报告1. 引言本报告旨在总结和分析北邮数电综合实验的结果和过程。
该实验旨在培养学生的综合能力,包括数字电路设计、程序编写和硬件调试。
本文将按照实验步骤的顺序,逐步介绍实验的内容和结果。
2. 实验准备在开始实验之前,我们需要准备以下材料和设备:•Altera Quartus II软件:用于数字电路设计和仿真。
•FPGA(现场可编程门阵列)开发板:用于实际测试和验证设计。
•USB数据线:用于将设计传输到FPGA开发板上。
•数字电路实验板:用于连接外部电路和FPGA开发板。
3. 实验步骤3.1 实验一:基本逻辑门电路设计在本实验中,我们首先设计了基本逻辑门电路,包括与门、或门和非门。
通过使用Quartus II软件,我们可以绘制原理图并进行逻辑仿真。
在验证正确性后,将设计下载到FPGA开发板上进行物理验证。
3.2 实验二:二进制加法器设计在第二个实验中,我们设计了一个4位二进制加法器。
通过使用逻辑门和触发器,我们可以将两个4位二进制数相加,并输出结果。
使用Quartus II软件进行综合、布线和仿真,然后将设计下载到FPGA开发板上进行物理验证。
3.3 实验三:7段数码管驱动器设计在本实验中,我们设计了一个7段数码管驱动器。
通过使用逻辑门和触发器,我们可以将4位二进制数转换为相应的7段显示。
使用Quartus II软件进行综合、布线和仿真,然后将设计下载到FPGA开发板上进行物理验证。
3.4 实验四:有限状态机设计在最后一个实验中,我们设计了一个简单的有限状态机。
该状态机可以通过输入信号的变化而改变其状态,并根据当前状态和输入信号来产生输出。
使用Quartus II软件进行综合、布线和仿真,然后将设计下载到FPGA开发板上进行物理验证。
4. 结果与讨论通过对实验的各个步骤进行详细的设计和验证,我们成功完成了北邮数电综合实验。
通过使用Quartus II软件进行仿真和物理验证,我们验证了设计的正确性和可行性。
北邮数电实验报告_双色点阵
北京邮电大学数电综合实验报告实验名称:双色点阵显示控制器学院:姓名:班级:学号:班内序号:一.设计课题的任务要求用8×8点阵设计双色点阵显示控制器 基本要求: 1、固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn 按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2、用从红到绿8级渐变色显示一个固定汉字或图形。
3、分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn 按键进行切换。
4、显示的图形或汉字要尽量饱满美观。
提高要求:滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
自拟其它功能。
二.系统设计1. 设计思路考虑本程序设计要求模块明确单一但需要变化多种状态,因此采用单模块多状态多进程方式实现。
其中防抖进程用于检测输入,本程序使用BTN 按键进行输入控制,而按键的键入可能由于抖动产生多个上升沿,对程序的控制产生影响。
防抖动采用了延时原理来对冒险或长时间按键电平进行处理。
分频使用了多个进程产生程序所需要的多个时钟频率。
包括:clk1(扫描时钟 大于480Hz 但不过高)clk2(占空比调节1 clk1周期的整数倍,但不过高) clk3(占空比调节2 同clk2,但占空比不同) clk4(占空比调节3 同clk2,但占空比不同) clk5(按键时钟 约100Hz) clk6(滚动变化计时 约1Hz)状态机变化进程用于管理状态变化,当遇到按键电平信号时根据规则改变对应状态。
显示进程包括主要显示进程和一些辅助进程,辅助进程完成了时钟对应计数器计数,主进程则根据状态变化显示不同显示模式下不同的图案。
2. 总体框图(1) 总体结构框图:(2) 逻辑划分框图Mode(3)MDS图3.各进程介绍⑴分频进程们分频进程含一个从50M(也可能是25M)分出的扫描频率clk1,这个频率要大于60*8=480Hz(因为人眼分辨频率为60Hz左右,要保证每排扫描时达到60Hz 则需480Hz)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电路与逻辑设计实验报告学院:电子工程学院班级:姓名:学号:班内序号:目录(一)实验名称及实验任务要求 (1)(二)模块端口说明及连接图 (2)1.1实验三(3)模块端口说明 (2)1.2实验三(3)连接图 (2)2.1实验四模块端口说明 (2)2.2实验四连接图 (2)(三)原理图或VHDL代码 (3)1.实验一(2)原理图 (3)2.实验三(3)VHDL代码 (4)3.实验四VHDL代码 (7)(四)仿真波形 (10)1.实验一(2)仿真波形 (10)2.实验三(3)仿真波形 (11)3.实验四仿真波形 (11)(五)仿真波形分析 (11)1.实验一(2)仿真波形分析 (11)2.实验三(3)仿真波形分析 (11)3.实验四仿真波形分析 (11)(六)故障及问题分析 (12)(七)总结和结论 (13)(一)实验名称及实验任务要求实验一名称:QuartusII原理图输入法设计与实现实验任务要求:EDA基础实验1(1)、(2)、(3)必做,选做VHDL 实现加法器。
实验二名称:用VHDL设计与实现组合逻辑电路实验任务要求:四人表决器、8421码转格雷码、数码管译码器(下载测试)。
实验三名称:用VHDL设计与实现时序逻辑电路实验任务要求:分频器、8421十进制计数器、将分频器/8421十进制计数器/数码管译码器3个电路进行连接并下载。
实验四名称:用VHDL设计与实现相关电路实验任务要求:数码管动态扫描控制器、点阵扫描控制器。
(二)模块端口说明及连接图1.1实验三(3)模块端口说明cp:时钟信号输入;rst:8421十进制计数器异步置位;c[6...0]:七段二极管数码管显示;cat[7...0]:数码管显示。
1.2实验三(3)连接图2.1实验四模块端口说明cp:时钟信号输入;rst:8421计数器异步复位;lgt[6...0]:七段二极管数码管显示;cat[7...0]:数码管显示。
2.2实验四连接图(三)原理图或VHDL代码1.实验一(2)原理图半加器:全加器:2.实验三(3)VHDL代码//分频器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all; entity div_12 isport(cp: in std_logic;clk1: out std_logic);end div_12;architecture a of div_12 issignal tmp: integer range 0 to 11;beginprocess (cp)beginif (cp'event and cp='1') thenif tmp=11 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=5 then clk1<='0';else clk1<='1';end if;end if;end process;end a;//8421十进制加法器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jisuqi8421 isport(clk2,rst: in std_logic;q: out std_logic_vector(3 downto 0));end jisuqi8421;architecture a of jisuqi8421 issignal q_temp:std_logic_vector (3 downto 0); beginprocess(clk2,rst)beginif (rst='1') thenq_temp<="0000";elsif (clk2'event and clk2='1') thenif q_temp>="1001" then q_temp<="0000";elseq_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_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yimaguan ISPORT(a: IN STD_LOGIC_VECTOR (3 downto 0);b: OUT STD_LOGIC_VECTOR (6 downto 0);cat: out std_logic_vector(7 downto 0));end yimaguan;ARCHITECTURE seg7_1_arch OF yimaguan ISBEGINPROCESS(a)BEGINCASE a ISWHEN"0000" => b <="1111110"; --0WHEN"0001" => b <="0110000"; --1WHEN"0010" => b <="1101101"; --2WHEN"0011" => b <="1111001"; --3WHEN"0100" => b <="0110011"; --4WHEN"0101" => b <="1011011"; --5WHEN"0110" => b <="1011111"; --6WHEN"0111" => b <="1110000"; --7WHEN"1000" => b <="1111111"; --8WHEN"1001" => b <="1111011"; --9WHEN OTHERS => b <="0000000";END CASE;END PROCESS;cat<="11101111";END;//整体显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display isport(cp,rst: in std_logic;c:out std_logic_vector(6 downto 0);cat: out std_logic_vector(7 downto 0));end display;architecture r of display iscomponent div_12port(cp:in std_logic;clk1:out std_logic);end component;component jisuqi8421port(clk2,rst:in std_logic;q:out std_logic_vector(3 downto 0));end component;component yimaguanport(a:in std_logic_vector(3 downto 0);b:out std_logic_vector(6 downto 0);cat: out std_logic_vector(7 downto 0));end component;signal x:std_logic;signal y:std_logic_vector(3 downto 0);beginu1:div_12 port map(cp=>cp,clk1=>x);u2:jisuqi8421 port map(clk2=>x,rst=>rst,q=>y); u3:yimaguan port map(a=>y,b=>c,cat=>cat); end r;3.实验四VHDL代码//分频器分频部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div isport(cp: in std_logic;clk1: out std_logic);end div;architecture a of div issignal tmp: integer range 0 to 49;beginprocess (cp)beginif (cp'event and cp='1') thenif tmp=49 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=25 then clk1<='0';else clk1<='1';end if;end if;end process;end a;//计数器计数部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity count isport(clk,rst: in std_logic;q: out std_logic_vector(3 downto 0));end count;architecture a of count issignal temp:std_logic_vector (3 downto 0); beginprocess(clk,rst)beginif (rst='1') thentemp<="0000";elsif (clk'event and clk='1') thenif temp>="0101" then temp<="0000";elsetemp<=temp+1;end if;end if;end process;q<=temp;end a;//译码管显示部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity yimaqi isport(a:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end entity;architecture rtl of yimaqi isbeginprocess(a)begincase a iswhen "0000"=>led<="1111110"; cat<="11111110"; --0when "0001"=>led<="0110000"; cat<="11111101"; --1when "0010"=>led<="1101101"; cat<="11111011"; --2when "0011"=>led<="1111001"; cat<="11110111"; --3when "0100"=>led<="0110011"; cat<="11101111"; --4when "0101"=>led<="1011011"; cat<="11011111"; --5when others=>led<="0000000"; cat<="11111111";end case;end process;end;//合成数码管显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity show isport(cp:in std_logic;rst:in std_logic;lgt:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end entity;architecture rtl of show iscomponent divport(cp : in std_logic;clk1: out std_logic);end component;signal x:std_logic;component countport(clk,rst: in std_logic;q: out std_logic_vector(3 downto 0));end component;signal y:std_logic_vector(3 downto 0); component yimaqiport(a :in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end component;beginu0:div port map (cp=>cp,clk1=>x);u1:count port map(clk=>x,rst=>rst,q=>y);u2:yimaqi port map(a=>y,cat=>cat,led=>lgt); end rtl;(四)仿真波形1.实验一(2)仿真波形2.实验三(3)仿真波形3.实验四仿真波形(五)仿真波形分析1.实验一(2)仿真波形分析a,b,ci均为输入信号,s,co为输出信号其逻辑功能为:s=a xor b xor cico=( ( a xor b ) and ci ) or (a and b )2.实验三(3)仿真波形分析rst,cp均为输入信号,c,cat为输出信号。