北邮数电实验-数码管扫描显示控制器设计与实现
- 格式:pdf
- 大小:1.02 MB
- 文档页数:16
数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求: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行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
北京邮电大学电路实验中心<数字电路与逻辑设计实验(上)>实验报告班级: xxx学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx)学号: 2xxx实验时间: xxxx评定成绩:目录实验1 Quartus II 原理图输入法设计与实现 (3)一、实验目的 (3)二、实验所用器材 (3)三、实验任务要求 (3)四、实验原理图 (3)五、实验仿真波形图及分析 (4)实验2 用VHDL 设计与实现组合逻辑电路 (5)一、实验目的 (5)二、实验所用器材 (5)三、实验任务要求 (5)四、VHDL代码 (5)五、实验仿真波形图及分析 (7)实验3 用VHDL 设计与实现时序逻辑电路 (8)一、实验目的 (8)二、实验所用器材 (8)三、实验任务要求 (8)四、模块端口说明及连接图 (8)五、VHDL代码 (9)六、实验仿真波形图及分析 (10)实验4 用VHDL 设计与实现数码管动态扫描控制器 (10)一、实验目的 (10)二、实验所用器材 (11)三、实验任务要求 (11)四、模块端口说明及连接图 (11)五、VHDL代码 (11)六、实验仿真波形图及分析 (15)故障及问题分析 (16)总结和结论 (17)实验1 Quartus II 原理图输入法设计与实现一、实验目的(1)熟悉用Quartus II原理图输入法进行电路设计和仿真;(2)掌握Quartus II 图形模块单元的生成与调用;(3)熟悉实验板的使用。
二、实验所用器材(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。
三、实验任务要求(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数+CBA,仿真验证其功能,并下载到实验板测试。
北京邮电大学电路实验中心<数字电路与逻辑设计实验(下)>实验报告班级: xxx 学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx 学号: xxx实验时间: xxx评定成绩:目录一、任务要求 (2)1.基本要求 (2)2.提高要求 (2)二、系统设计 (2)1.设计思路 (2)2.总体框图 (4)3.分块设计 (5)(1)分频器模块 (5)(2)4×4键盘输入模块 (5)(3)数码管显示模块 (6)(4)8×8 LED点阵显示模块 (6)(5)LCD液晶屏显示模块 (6)(6)中心模块 (6)三、仿真波形及波形分析 (6)1.分频器模块 (6)2.4×4键盘输入模块 (7)3.数码管显示模块 (7)4.8×8 LED点阵显示模块 (8)5.LCD液晶屏显示模块 (8)6.中心模块 (8)四、源程序 (9)1.分频器模块 (9)2.4×4键盘输入模块 (9)3.数码管显示模块 (11)4.8×8 LED点阵显示模块 (12)5.LCD液晶屏显示模块 (19)6.中心模块 (23)五、功能说明及资源利用情况 (26)六、故障及问题分析 (27)七、总结和结论 (27)一、任务要求本电路可供甲乙二人进行猜拳游戏。
通过不同的按键控制,选择多种出拳方式,显示猜拳的结果,实现猜拳游戏,防止了作弊的可能。
1.基本要求1、甲乙双方各用4×4 键盘中的三个按键模拟“石头”、“剪刀”、“布”,一个按键为“确认”。
4×4 键盘第一行为甲,第二行为乙;2、裁判用4×4 键盘第三行的一个按键模拟“开”,一个按键为“准备”,一个按键为“复位”;3、裁判宣布“准备”后,甲乙双方分别选择出拳方式并确认;4、裁判“开”以后,用点阵的左右三列同时显示甲乙双方的猜拳选择(如下图所示),并用两个数码管显示甲乙的猜拳比分;图1甲“布”,乙“剪刀”;甲“剪刀”,乙“石头”5、猜拳游戏为五局三胜制。
北京邮电大学数字电路与逻辑设计实验报告学院:班级:姓名:学号:实验一 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)熟悉用VHDL语言设计时序逻辑电路的方法;(2)熟悉用Quartus II文本输入法进行电路设计;(3)熟悉不同的编码及其之间的转换。
二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。
三、实验任务要求(1)用 VHDL语言设计实现一个共阴极7段数码管译码器;(2)用VHDL语言设计一个8421码转余三码的代码转换器;(3)用VHDL语言设计设计一个四位2进制奇校验器。
北京邮电大学数字电路与逻辑设计实验学院:班级:姓名:学号:班内序号:实验一一、实验名称Quartus II 原理图输出法设计(一)半加器二、实验任务要求用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
三、设计思路和过程◎设计思路半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。
数据输入:被加数AI、加数BI数据输出:半加和SO、进位CO◎设计过程,输出有一个是和SO,另一个是进位CO。
(2)根据真值表写出输出逻辑表达式该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下:AICO⋅=。
所以,可以用一个两输入异或门和一个两输入与门SO⊕=,BIBIAI实现。
◎实验原理图四、仿真波形图及分析根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。
但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。
(二)全加器二、实验任务要求用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
三、设计思路和过程 ◎设计思路全加器与半加器的区别在于全加器有一个低进位CI ,从外部特性来看,它是一个三输入两输出的器件。
◎设计过程SO ,向相邻高位进位数为CO 。
(2)根据真值表写出逻辑表达式:CI BI AI SO ⊕⊕=,BI AI CI BI AI CO ⋅+⋅⊕=)(根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器。
◎实验原理图四、仿真波形图及分析根据仿真波形对比全加器真值表,可以确定电路实现了全加器的功能。
(三)3线—8线译码器二、实验任务要求用3线—8线译码器(74LS138)和逻辑门设计实现函数CBF+A++=,仿真验证其功能,并下载到实验板测试。
北京邮电大学实验报告实验名称:数码管扫描显示控制器设计与实现学院: 信息与通信工程学院班ﻩ级: 2010211123姓名: XXX学ﻩ号:XXXXXXXX日期: 2012年4月20日目录一.实验目的 .................................................................................. 错误!未定义书签。
二.实验所用仪器及元器件ﻩ错误!未定义书签。
三.实验任务要求........................................................................... 错误!未定义书签。
四.实验设计思路及过程ﻩ31.实验原理 (3)2.设计思路ﻩ错误!未定义书签。
3.VHDL代码ﻩ4五.仿真波形及分析ﻩ81.仿真波形 (8)2.波形分析ﻩ9六.故障及问题分析 (9)1.频率设置问题ﻩ92.触发问题 ............................................................................................ 错误!未定义书签。
七.本实验总结与结论ﻩ错误!未定义书签。
八.学期总结ﻩ错误!未定义书签。
一.实验目的1.掌握VHDL语言的语法规范,掌握时序电路描述方法2.掌握多个数码管动态扫描显示的原理及设计方法二.实验所用仪器及元器件1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三.实验任务要求用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。
四.实验设计思路及过程1.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。
动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码.各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
数字电路与逻辑设计实验报告题目:双色点阵显示控制器的设计与实现班级:学号:姓名:1 实验要求1.1基本要求:1)固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2) 用从红到绿8级渐变色显示一个固定汉字或图形。
3) 分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn 按键进行切换。
4) 显示的图形或汉字要尽量饱满美观。
1.2提高要求:1) 滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
2) 自拟其它功能。
2系统设计2.1设计思路本实验采用自顶向下设计法:从整个系统功能出发,按一定原则将系统划分为若干子系统,再将每个子系统分为若干功能模块,然后实现所要求的的功能。
总体是通过分频、按键控制、扫描控制等模块实现上述功能,通过占空比来改变色彩,实现八级渐变色,通过扫描频率的改变和信号的占空比实现亮度的调节,通过行扫描和列扫描的不同实现左右滚动显示和上下滚动显示。
由于按键动作的时刻和按下的时间长短是随机的,并且存在由开关簧片反弹导致的电平抖动,所以还要为每个按键开关设置一个消抖和同步电路,这样才能保证按键的准确性。
2.2总体设计框图1)总体结构框图2)ASM 图选择汉字或图形 选择显示模式 选择亮度显示不同的文字或者图案no yes yes no yes no yesno如图所示:开始由按键选择模式,是单个渐变色显示,还是循环显示,还是可改变亮度显示,在执行的同时检查是否按下reset 键,如果reset 键被按下,那么将对系统进行复位。
选择图形或文字选择显示方式 case1?case2?csae3 左右滚动显示上下滚动显示四种颜色自动变换 循环显示点阵屏显示循环显示? 调亮显示?固定红色 调节亮度 从红到绿八级变色 开始2.3模块划分逻辑划分框图CP如图所示:系统主要分成3个模块:分频模块针对不同的模式进行分频,扫描控制模块通过行扫描或者列扫描来控制循环显示的方式,点阵显示模块主要是响应不同模式下的点阵显示方式及图形。
数字电路与逻辑设计实验报告学院:电子工程学院班级:姓名:学号:班内序号:目录(一)实验名称及实验任务要求 (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为输出信号。
数码管扫描显示控制器的设计与实现一、六个数码管串行扫描电路1.实验任务要求:⑴掌握VHDL语言的语法规范,掌握时序电路描述方法⑵掌握多个数码管动态扫描显示的原理及设计方法2.设计思路和过程用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上,仿真并下载验证其功能:使用模6计数器产生一个M=6的信号,控制“数码管选通控制信号”cat的输出,低电平点亮管,使“0至5号”6个数码管依次点亮;同时控制数字的输出,依次输出0至5。
由于使用了同一个模6计数器,使得cat的输出与数字的输出是同步的,第k号数码管亮时输出k.当时钟频率足够大时(6个数码管需要300Hz以上的频率),数码管能稳定显示,在视觉上表现为同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上3.V HDL 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shiyanshi1 ISPORT(clk,clear:IN STD_LOGIC;cat:OUT STD_LOGIC_VECTOR(5 downto 0);b:OUT STD_LOGIC_VECTOR(6 downto 0));end shiyanshi1;ARCHITECTURE shumaguan OF shiyanshi1 ISSIGNAL q_temp: STD_LOGIC_VECTOR(2 downto 0);BEGINPROCESS(clk)BEGINIF(clk'event and clk='1') THENIF clear='0' THENq_temp<="000";ELSIF q_temp="101" THENq_temp<="000";ELSEq_temp<=q_temp+1;END IF;CASE q_temp ISWHEN "000" => cat <="111110"; --0WHEN "001" => cat <="111101"; --1WHEN "010" => cat <="111011"; --2WHEN "011" => cat <="110111"; --3WHEN "100" => cat <="101111"; --4WHEN "101" => cat <="011111"; --5WHEN OTHERS => cat <="111111";END CASE;CASE q_temp ISWHEN "000" => b <="1111110"; --0WHEN "001" => b <="0110000"; --1WHEN "010" => b <="1101101"; --2WHEN "011" => b <="1111001"; --3WHEN "100" => b <="0110011"; --4WHEN "101" => b <="1011011"; --5WHEN OTHERS => b <="0000000";END CASE;END IF;END PROCESS;END shumaguan;4.仿真波形图5.仿真波形图分析如图,clear为复位信号,cp为时钟信号,cat5至cat0为数码管选通控制信号,b为数码管所显示的数字图形。
北邮数电实验报告1. 实验目的本实验的目的是通过实际操作和实验验证,加深对数字电路的理解和掌握。
具体实验内容包括: 1. 实现各种基本逻辑电路(与门、或门、非门、异或门等)的电路设计。
2. 学习使用开关和LED灯进行数字信号输入和输出。
3. 掌握数字电路实验中常用的仪器设备的使用方法。
2. 实验器材和环境本实验所使用的器材和环境如下: - FPGA实验箱 - 数字逻辑集成电路(与门、或门、非门、异或门等) - 电源 - 接线板 - 数字电路实验仪器3. 实验步骤3.1 实验准备首先,我们需要将实验所需的器材连接好,包括将数字逻辑集成电路插入到FPGA实验箱上的插槽中,并将电源正确连接。
3.2 电路设计与布线根据实验要求,我们需要设计不同的基本逻辑电路。
比如,要设计一个与门电路,可以通过将两个输入端分别与两个开关连接,将输出端连接到一个LED灯上。
其他的逻辑电路同样可以设计类似的方式。
在设计和布线的过程中,需要注意保持电路的连通性,并避免出现短路等问题。
3.3 输入和输出信号设置根据实验要求,我们需要设置输入和输出信号。
可以通过控制开关的开合状态来设置输入信号,然后观察LED灯的亮灭情况来判断输出信号的状态是否符合预期。
3.4 实验数据记录和分析在实验过程中,我们需要记录每个逻辑电路的输入和输出信号状态,并进行分析。
可以通过绘制真值表或者逻辑门表来记录并分析数据。
4. 实验结果与分析根据实验步骤中记录的数据,我们可以得出实验结果,并进行进一步的分析。
比如,可以通过比对设计的逻辑电路输出和预期输出的差异,来判断实验是否成功完成。
5. 总结与反思通过本次实验,我深入了解和掌握了数字电路的基本原理和实验方法。
通过设计和实验验证,加深了对基本逻辑电路的理解,并熟悉了数字电路实验所使用的仪器设备。
在实验过程中,我遇到了一些问题,比如电路连接错误导致的信号不稳定等,但通过仔细调试和排查,最终解决了这些问题。
数字电路试验汇报学院: 信息与通信工程专业: 信息工程班级: 211125学号: 210681姓名: 袁普试验一: QuartusⅡ原理图输入法设计与实现一: 试验要求①: 用逻辑门设计实现一个半加器, 仿真验证其功效, 并生成新半加器图形模块单元。
②: 用试验一生成半加器模块和逻辑门设计实现一个全加器, 仿真验证其功效, 并下载到试验板测试, 要求用拨码开关设定输入信号, 发光二极管显示输出信号。
③: 用3线—8线译码器和逻辑门设计实现函数F, 仿真验证其功效, 下载到试验板测试。
要求用拨码开关设定输入信号, 发光二极管显示输出信号。
二: 汇报内容①: 试验一(2)原理图用两个已经生成半加器图形模块单元和一个双输入或门即可实现全加器②: 仿真波形图以及分析波形图:波形分析: 经过分析ab ci三个输入在8中不一样组合下输出, 发觉与全加器真值表吻合, 说明实现了全加器逻辑功效。
同时看见波形中出现了毛刺(冒险), 这也与事实一致。
③: 故障及问题分析第一次在做全加器时候发觉找不到已经生成半加器模块, 以后发觉是因为在建立工程时这两个项目没有建在同一个文件夹里, 在调用时候就找不到。
以后我将全加器工程建在同一个文件夹里处理了此问题。
试验二: 用VHDL设计和实现组合逻辑电路一: 试验要求①: 用VHDL设计一个8421码转换为格雷码代码转换器, 仿真验证其功效。
②: 用VHDL设计一个4位二进制奇校验器, 要求在为奇数个1时输出为1, 偶数个1时输出为0, 仿真验证其功效。
③: 用VHDL设计一个数码管译码器, 仿真验证其功效, 下载到试验板测试, 要求用拨码开关设定输入信号, 数码管显示输出信号, 而且只使一个数码管有显示, 其它为熄灭状态。
二: 故障及问题分析在刚开始实现让一个数码管显示时候, 我原来准备再设置6个输入和输出, 经过试验板上拨码来输入信息分别控制不一样数码管开闭状态, 不过以后发觉这么效率很低而且试验板上拨码开关数量根本不够。
北邮数电综合实验报告北邮数电综合实验报告一、实验目的与背景数电综合实验是北邮电子信息工程专业的重要实践环节,旨在通过实际操作,巩固和应用学生在数字电路、模拟电路、通信原理等相关课程中所学到的理论知识。
本实验报告将对数电综合实验的内容、过程和结果进行详细描述和分析。
二、实验内容本次数电综合实验的主要内容为设计一个数字电子钟。
该电子钟具备显示时间、日期、闹钟功能,并能实现闹钟的设置、开关控制等基本操作。
实验中,我们需要使用数字集成电路、显示模块、按键开关、时钟模块等元件进行电路设计和搭建。
三、实验过程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,该结果又在寄存器中存储着。
数字电路与逻辑设计实验设计方案题目:双色点阵显示控制器一、设计思路⏹基本要求:1.固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2.用从红到绿8级渐变色显示一个固定汉字或图形。
3.分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn按键进行切换。
4.显示的图形或汉字要尽量饱满美观。
⏹提高要求:1.滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
2.自拟其它功能。
二、系统设计总体框图方框图(模块划分)ASM图MDS图三、仿真波形及仿真分析1.时钟分频分析:这个进程组用于产生不同频率的时钟用于不同用途的时钟信号,图中所表达的也是如此,不同频率的时钟信号。
对于lightness信号来说,它是一个低分频的,可控占空比的信号,图中所示为占空比为80%时的信号。
2.防抖分析:Mode_in和intensity_in信号有短时间的抖动现象,在经过防抖之后,短时间的抖动并不会影响mode和intensity信号。
Mode_in和intensity_in信号有长时间的高电平,这会使控制电路既要检测上升沿又要检测下降沿。
经过防抖程序之后,将控制信号mode和intensity处理成脉冲信号,这样控制电路只需检测是否有正脉冲就可以了。
3.状态控制与亮度调节分析:每当mode信号有一个正脉冲时,state就变化一次。
每当intensity信号有一个正脉冲时,lightness就改变一次占空比。
4.颜色改变分析:当状态改变到S1的时候,占空比信号才会改变。
从图中可以看出,可控占空比信号是每八个时间单位为一组,这八个时间单位分别代表着第一行被选中、第二行被选中、……第八行被选中。
当第一行被选中时,可以清楚看到红色和绿色控制信号的占空比是不同的,这样就会导致点阵点的颜色中红色成分和绿色成分亮度不同,从而改变其颜色。
数电课程设计数码管显示控制器的设计与实现 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】目录1引言是电子设备中不可缺少的部分,从灯泡,阴极射线管(CRT,cathode-ray tube)显示器,到发光二级管(,light-emittingdiode),液晶(,Liquid CrystalDisplay),显示器件的发展伴随着电子技术的不断发展。
目前,在小型便携式电子设备中,LED和LCD显示器件成为主要的显示器件,其中发光二级管和IJED数码管,主要用于状态指示和数字字符显示,LCD主要用于文字和图形显示。
LED数码管是用发光二级管组成字符笔画或点阵,用于显示简单字符和图形。
最常用的是七段LED数码管,它用发光二级管组成数字字符8的七段笔画,至少可以显示十六进制数字的十六个字符,再加上一个小数点显示,常用于在电子设备上显示数字字符串。
其特点主要在于使用简单,价格低廉,显示亮度高,功耗小,器件可靠性很高。
本设计即利用逻辑芯片来实现数码管的控制显示1.设计背景设计任务根据已知条件,完成对数码管显示控制器的设计、装配与调试。
设计要求(1)能自动一次显示出数字 0、1、2、3、4、5、6、7、8、9(自然数列),1、3、5、7、9(奇数列), 0、2、4、6、8(偶数列),0、1、0、1、2、3、4、5、6、7(音乐符号序列);然后再从头循环;(2)打开电源自动复位,从自然数列开始显示。
指导思想本设计将采用几个基本的数字集成的74系列(74LS153,555)芯片来完成所需要的数字逻辑显示功能(在七段数码管上按规律显示特定的数字)。
本设计具有逻辑清晰、设计巧妙的特点,能很好的符合课程设计的要求。
2.方案论证方案说明该设计的关键是对74LS153的输入端的强制置数的处理,设计要求产生奇数,实际上就是将第一个74LS153的1C1强制置1;要求产生偶数,实际上就是把第一个74LS153的1C2强制置0;要求产生0-7的音乐符号,实际就是把第二个74LS153的2C3强制置0;也就是说产生十进制的的计数一直是不变的,它内部的技术依然是0-9的计数,我们只是在外部改变了它的输出而已,因此我们这个方案采用一个最简易的方案:两个74LS160和两个 74LS153,一个555作脉冲产生之用,一片74LS48译码,一个七段数码管作显示。
2018212048赵依然实验5双色点阵扫描显示控制器一、实验要求1.用8×8点阵显示字符,每次显示一个字符,每秒切换一次,显示内容为“B”、“U”、“P”、“T”及姓名的第一个字母。
如张三显示的内容为“B”、“U”、“P”、“T”、“Z”、“S”。
2.为系统设置一个复位键,复位后重新从“B”开始循环显示。
要求使用按键复位。
二、实验设计思路我们知道点阵的结构,当row轮流出0的时候,二极管阴极为低电平,这时候我们给到一个高电平在红灯或者绿灯的阳极的时候,就能驱使灯点亮。
这样我们可以基于“视觉暂留”的现象,快速刷新row灯,使得点阵能够快速点亮,这样就能显示一个完整的字,最后再利用一个模7计数器来实现每个字母之间的转换。
我们引入一个1000hz的时钟,并对其进行一个1000分频变成1hz的时钟。
之后再利用这个模7计数器来控制cor_l和cor_g和row来控制灯的颜色、每行灯亮时列的亮灯情况。
另外,我们需要一个模8计数器,后面再设计一个3-8线译码器,这样能够控制row的亮灯情况。
最后我们需要注意的是,由于row需要快速刷新,故我们需要用1000hz的时钟,而字符之间的转换的计数器要用1hz的时钟,来满足亮灯1s的条件。
我们还需要设计一个复位键,以便能做到按下按钮重新回到第一个字母的功能,这需要reset 按下时,模7计数器的数字回到0。
这样把带防抖的复位键加进去即可。
最后顶层将这两个模块连接起来即可。
三、VHDL代码及注释点阵部分:library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;use IEEE.std_logic_arith.all;entity dianzhen isport(clk:in std_logic;col_r:out std_logic_vector(7downto0);--红灯的控制显示col_g:out std_logic_vector(7downto0);--绿灯的控制显示row:out std_logic_vector(7downto0);--二极管阴极控制reset:in std_logic);end dianzhen;architecture a of dianzhen issignal sel7:std_logic_vector(2downto0);--模7计数器的信号signal sel8:std_logic_vector(2downto0);--模8计数器的信号signal clk_add:std_logic:='0';--分频后的时钟beginp1:process(clk)--1000分频variable c:integer range0to499:=0;beginif(clk'event and clk='1')thenif c=499thenclk_add<=not clk_add;c:=0;elsec:=c+1;end if;end if;end process p1;p2:process(clk)--模8计数器beginif(clk'event and clk='1')thensel8<=sel8+1;--加满自动重新归零end if;end process p2;p3:process(clk_add,reset)--模7计数器beginif(reset='1')then--当出现重置的信号为高电平时,计数器重置为000,这样就能回到字母B sel7<="000";elsif(CLK_add'EVENT AND CLK_add='1')thenif(sel7=O"6")thensel7<=O"0";--模满7归零else sel7<=sel7+1;end if;end if;end process p3;p4:process(sel7,sel8)—模7和模8共同作用,模8用来快速刷新row,模7用来控制哪个字母,每行对应相对的列点亮的情况,显示字母。
北京邮电大学实验报告实验名称:数码管扫描显示控制器设计与实现学院:信息与通信工程学院班级:2011XXXXXX姓名:XXX学号:日期:2013年5月一.实验目的1.掌握VHDL语言的语法规范,掌握时序电路描述方法2.掌握多个数码管动态扫描显示的原理及设计方法二.实验所用仪器及元器件1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三.实验任务要求1.用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。
2.用VHDL语言设计并实现六个数码管滚动显示电路。
(选作)I.循环滚动,始终点亮6个数码管,左出右进。
状态为:012345-123450-234501-345012-450123-501234-012345II.向左滚动,用全灭的数码管充右边,直至全部变灭,然后再依次从右边一个一个地点亮。
状态为:012345-12345X-2345XX-345XXX-45XXXX-5XXXXX-XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345,其中’X’表示数码管不显示。
四.实验设计思路及过程1.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。
动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
因此在同一时刻如果各位数码管的位选线都处于选通状态的话,6位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。
同时,段线上输出相应位要显示字符的字型码。
这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环一次点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
6个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。
2.设计思路设计时序电路,选用模值为6的计数器,通过一个3线至6线译码器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同时产生对应的,将点亮的LED数码管赋值显示为相应的数码予以显示。
由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。
3.VHDL代码A.实验任务1①实现代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14ISPORT(clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(6DOWNTO0);countout:OUT STD_LOGIC_VECTOR(5DOWNTO0)); END GKY07P14;ARCHITECTURE behave OF GKY07P14ISSIGNAL q_temp:STD_LOGIC_VECTOR(6DOWNTO0); SIGNAL count:STD_LOGIC_VECTOR(5DOWNTO0); SIGNAL cnt:INTEGER RANGE0TO5;BEGINp1:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(cnt=5)THEN cnt<=0;ELSEcnt<=cnt+1;END IF;END IF;END PROCESS;p2:PROCESS(cnt)BEGINIF(clear='0')THEN count<="111111";ELSECASE cnt ISWHEN1=>count<="101111";q_temp<="0110000";WHEN2=>count<="110111";q_temp<="1101101";WHEN3=>count<="111011";q_temp<="1111001";WHEN4=>count<="111101";q_temp<="0110011";WHEN5=>count<="111110";q_temp<="1011011";WHEN0=>count<="011111";q_temp<="1111110";END CASE;END IF;END PROCESS;countout<=count;q<=q_temp;END behave;②代码说明通过分频器输入产生选通脉冲,控制0至5号LED数码管依次亮灭,同时使用数码显示信号使得数码管显示相应数码。
实现时通过连接引入分频信号,通过数据选择器选择数码管。
计数器信号触发数据选择器,赋值给位码触发数码管显示数码。
最终实现动态扫描显示数字序列。
B.实验任务2-I①实现代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14ISPORT(clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(6DOWNTO0);countout:OUT STD_LOGIC_VECTOR(5DOWNTO0));END GKY07P14;ARCHITECTURE behave OF GKY07P14ISSIGNAL q_temp:STD_LOGIC_VECTOR(6DOWNTO0);SIGNAL count:STD_LOGIC_VECTOR(5DOWNTO0);SIGNAL cnt,cnt1:INTEGER RANGE0TO5;SIGNAL tmp:INTEGER RANGE0TO15999;signal clk1:STD_LOGIC;BEGINp0:PROCESS(clk,clear)BEGINIF clear='0'THEN tmp<=0;ELSIF clk'EVENT AND clk='1'THENIF tmp=15999THENtmp<=0;ELSEtmp<=tmp+1;END IF;END IF;END PROCESS p0;p1:PROCESS(tmp)BEGINIF clk'EVENT AND clk='1'THENIF tmp<1000THENclk1<='0';ELSEclk1<='1';END IF;END IF;END PROCESS p1;p2:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(cnt=5)THEN cnt<=0;ELSEcnt<=cnt+1;END IF;END IF;END PROCESS p2;p3:PROCESS(clk1)BEGINIF(clk1'EVENT AND clk1='1')THENIF(cnt1=5)THEN cnt1<=0;ELSEcnt1<=cnt1+1;END IF;END IF;END PROCESS p3;p4:PROCESS(cnt,cnt1)BEGINIF(clear='0')THEN q_temp<="0000000"; ELSECASE cnt+cnt1ISWHEN0=>q_temp<="1111110";WHEN1=>q_temp<="0110000";WHEN2=>q_temp<="1101101";WHEN3=>q_temp<="1111001";WHEN4=>q_temp<="0110011";WHEN5=>q_temp<="1011011";WHEN6=>q_temp<="1111110";WHEN7=>q_temp<="0110000";WHEN8=>q_temp<="1101101";WHEN9=>q_temp<="1111001";WHEN10=>q_temp<="0110011";WHEN11=>q_temp<="1011011";WHEN OTHERS=>q_temp<="0000000";END CASE;END IF;END PROCESS p4;q<=q_temp;p5:PROCESS(cnt)BEGINIF(clear='0')THEN count<="111111";ELSECASE cnt ISWHEN0=>count<="011111";WHEN1=>count<="101111";WHEN2=>count<="110111";WHEN3=>count<="111011";WHEN4=>count<="111101";WHEN5=>count<="111110";WHEN OTHERS=>count<="111111";END CASE;END IF;END PROCESS p5;countout<=count;END behave;②代码说明代码主体和实验任务1中一致,基本思想也一致。