北邮数字电路综合实验报告
- 格式:doc
- 大小:408.27 KB
- 文档页数:24
北京邮电大学数电综合实验报告实验名称:双色点阵显示控制器学院:姓名:班级:学号:班内序号:一.设计课题的任务要求用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)。
北京邮电大学电路实验中心<数字电路与逻辑设计实验(上)>实验报告班级: 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、猜拳游戏为五局三胜制。
北京邮电大学信息与通信工程学院电路综合实验报告串行口数据传输的仿真及硬件实现姓名:学号:班内序号:班级:指导老师:日期:2014年10月10日摘要:本实验模拟了现代数字逻辑电路中的数据传输过程。
使用连续的代表0、1的高低电平作为数字信号,将该数字信号从输出端发送到接收端,并分别用串行、并行两种方式进行锁存,检测。
本实验模拟了序列信号的发生装置、串并转换装置、串行并行两种方式的检测装置、锁存输出和控制电路,实现了一个简单的串行口数据传输模型。
在此试验中,通过对常见芯片的组合实现功能,将一串由0、1组成的数字信号进行传输、转换、检测,使之显示在数码管上成为可读信息。
并且,还实现了对此电路显示的控制,使数码管在满足条件的情况下才点亮。
在实验中,还使用了Qua rtusⅡ对设计的电路进行了仿真模拟。
关键字:数据传输、串并转换、数据检测、QuartusIIAbstract:This experiment simulated data transfer in modern digital logic circuit. Digital signal was transferred from the output terminal to the receiving end, which was consisted ofcontinuous high or low level represent 0 and 1 as digital signal, and latch, test it through serial or parallel mode.Our experiment simulated the producing equipment of sequence signal, the signal conversion module, testing module of serial and parallel mode, latch output and control circuit. It implements a simple serial port data communication model. In the experiment, we use the combination of simple chips to realize the function that transport, transfer and test a sequence of the digital signal consisting of 0 and 1, and display it on LED Segment Displays. In addition, we realize the control of display. The LED Segment Displays works only in specific conditions. We also conduct simulations on QuartusⅡ.Keywords:Data transmission, String conversion, Data detection, Quartus II目录一、实验目的 (4)二、实验仪器 (4)三、实验内容及设计任务 (4)四、实验设计 (6)1.分频电路 (6)2.序列信号发生器 (6)3.串、并转换模块 (8)4.串行检测模块 (9)5.并行检测模块·························· (11)6.控制电路 (11)7.锁存显示模块 (12)8.总体电路图和仿真结果 (12)五、实验的硬件实现及结果分析 (14)六、遇到的问题及解决办法 (15)七、心得体会 (16)八、参考文献 (17)•实验目的串行口数据传输是数字系统中常用的一种数据传输方式。
北京邮电大学数字电路与逻辑设计实验发光二极管走马灯的电路设计与实现实验报告学院:信息与通信工程学院班级:27姓名:付莹学号:班内序号:23【实验目的】(1)进一步了解时序电路描述方法;(2)熟悉状态机的设计方法。
【实验所用仪器及元器件】(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。
【实验任务要求】设计并实现一个控制8个发光二极管亮灭的电路,仿真验证其功能,并下载到实验板测试。
(1)单点移动模式:一个点在8个发光二极管上来回的亮(2)幕布式:从中间两个点,同时向两边依次点亮直到全亮,然后再向中间点灭,依次往复。
【实验设计思路及过程】(1)设计思路实验要求有两个,一个是单点移动模式,一个是幕布式。
通过CASE-WHEN 语句实现走马灯的变化。
分别定义一个8个变量的数据类型和一个13变量的数据类型,表示一个周期内的灯的变化,并设计一个变量在两种状态间进行切换。
此时,需要把所有状态罗列到case-when中去。
(2)VHDL代码LIBRARY IEEE;USE ABC ISPORT(A,CLK,RESET:IN STD_LOGIC;DENG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ABC;ARCHITECTURE A OF ABC ISTYPE STATE_TEMP is(s0,s1,s2,s3,s4,s5,s6,s7);TYPE STATE_TEMP1 is(s0,s1,s2,s3,s4,s5,s6,s7,s00,s01,s02,s03,s04,s05);signal STATE:STATE_TEMP;signal STATE1:STATE_TEMP1;BEGINPROCESS(CLK,RESET)BEGINIF RESET='1' THENDENG<="00000000";ELSIF(CLK'EVENT AND CLK='0')THENIF A='0'THEN --KAIMUSHICASE STATE1 ISWHEN s0 => STATE1<=s1;DENG<="";WHEN s1 => STATE1<=s2;DENG<="01000000";WHEN s2 => STATE1<=s3;DENG<="00100000";WHEN s3 => STATE1<=s4;DENG<="00010000";WHEN s4 => STATE1<=s5;DENG<="00001000";WHEN s5 => STATE1<=s6;DENG<="00000100";WHEN s6 => STATE1<=s7;DENG<="00000010";WHEN s7 =>STATE1<=s00;DENG<="00000001";WHEN s00=>STATE1<=s01;DENG<="00000010";WHEN s01=>STATE1<=s02;DENG<="00000100";WHEN s02=>STATE1<=s03;DENG<="00001000";WHEN s03=>STATE1<=s04;DENG<="00010000";WHEN s04=>STATE1<=s05;DENG<="00100000";WHEN s05=>STATE1<=s0;DENG <="01000000";END CASE;ELSECASE STATE ISWHEN s0 => STATE<=s1;DENG<="00011000";WHEN s1 => STATE<=s2;DENG<="00111100";WHEN s2 => STATE<=s3;DENG<="01111110";WHEN s3 => STATE<=s4;DENG<="";WHEN s4 => STATE<=s5;DENG<="01111110";WHEN s5 => STATE<=s6;DENG<="00111100";WHEN s6 => STATE<=s7;DENG<="00011000";WHEN s7 => STATE<=s0;DENG<="00000000";END CASE;END IF;END IF;END PROCESS;END A;【仿真波形及分析】1.仿真波形(1)单点移动式(2)幕布式(3)复位信号2.波形分析(1)单点移动式由图可以看出,当A为0时程序实现单点移动功能,如图所示DENG[7]开始亮,之后依次为DENG[6], DENG[5], DENG[4], DENG[3], DENG[2],DENG[1], DENG[0],然后DENG[1]也开始亮,依此类推,实现了功能要求(2)幕布式由图可以看出,当A为1时,如图所示,先是中间的两个灯DENG[4], DENG[5]亮,然后扩展到四个灯亮DENG[3]至DENG[6]亮,接下来是DENG[2]~DENG[7]亮,最后全亮,接着DENG[2]~DENG[7]亮,继而循环下去。
北京邮电大学实验报告实验名称: 数电电路与逻辑设计实验学院:信息与通信工程学院班 级: 姓 名: 学 号: 班内序号:日期:一. 实验一: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’,仿真验证其功能。
三.VHDL语言设计思路及实现1.VHDL语言实现分频器(十分频)使用两个进程:p1用来控制在时钟上升沿触发,p2用中间变量temp来控制占空比为10%LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin ISPORT(clk,clear:IN STD_LOGIC;clk_out:OUT STD_LOGIC);END fenpin;ARCHITECTURE struc OF fenpin ISSIGNAL temp:INTEGER RANGE 0 TO 11;BEGINp1:PROCESS(clear,clk)BEGINIF clear='0' THENtemp<=0;ELSIF clk'EVENT AND clk='1' THENIF temp=9 THENtemp<=0;ELSEtemp<=temp+1;END IF;END IF;END PROCESS p1;p2:PROCESS(temp)BEGINIF temp<9 THENclk_out<='0';ELSEclk_out<='1';END IF;END PROCESS p2;END struc;2.VHDL语言实现模10计数器异步复位十进制计数器,计数状态为0000~1001,状态的改变通过q_temp实现,最后将其赋值给q,进行输出。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bcd24 ISPORT(clk,clr:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END bcd24;ARCHITECTURE struc OF bcd24 ISSIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF clr='0'THENq_temp<="0000";ELSIF q_temp="1001"THENq_temp<="0000";ELSEq_temp<=q_temp+1;END IF;END IF;END PROCESS;q<=q_temp;END struc;3. VHDL语言实现数码显示译码器通过不同的字段编码使LED数码管显示不同数字,用a表示计数状态,b表示字段a~g,下载时将b的7个值对应相应的a~g,以正确显示数字。
北京邮电大学数字电路与逻辑设计实验学院:班级:姓名:学号:班内序号:实验一一、实验名称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++=,仿真验证其功能,并下载到实验板测试。
北邮数电实验报告1. 实验目的本实验的目的是通过实际操作和实验验证,加深对数字电路的理解和掌握。
具体实验内容包括: 1. 实现各种基本逻辑电路(与门、或门、非门、异或门等)的电路设计。
2. 学习使用开关和LED灯进行数字信号输入和输出。
3. 掌握数字电路实验中常用的仪器设备的使用方法。
2. 实验器材和环境本实验所使用的器材和环境如下: - FPGA实验箱 - 数字逻辑集成电路(与门、或门、非门、异或门等) - 电源 - 接线板 - 数字电路实验仪器3. 实验步骤3.1 实验准备首先,我们需要将实验所需的器材连接好,包括将数字逻辑集成电路插入到FPGA实验箱上的插槽中,并将电源正确连接。
3.2 电路设计与布线根据实验要求,我们需要设计不同的基本逻辑电路。
比如,要设计一个与门电路,可以通过将两个输入端分别与两个开关连接,将输出端连接到一个LED灯上。
其他的逻辑电路同样可以设计类似的方式。
在设计和布线的过程中,需要注意保持电路的连通性,并避免出现短路等问题。
3.3 输入和输出信号设置根据实验要求,我们需要设置输入和输出信号。
可以通过控制开关的开合状态来设置输入信号,然后观察LED灯的亮灭情况来判断输出信号的状态是否符合预期。
3.4 实验数据记录和分析在实验过程中,我们需要记录每个逻辑电路的输入和输出信号状态,并进行分析。
可以通过绘制真值表或者逻辑门表来记录并分析数据。
4. 实验结果与分析根据实验步骤中记录的数据,我们可以得出实验结果,并进行进一步的分析。
比如,可以通过比对设计的逻辑电路输出和预期输出的差异,来判断实验是否成功完成。
5. 总结与反思通过本次实验,我深入了解和掌握了数字电路的基本原理和实验方法。
通过设计和实验验证,加深了对基本逻辑电路的理解,并熟悉了数字电路实验所使用的仪器设备。
在实验过程中,我遇到了一些问题,比如电路连接错误导致的信号不稳定等,但通过仔细调试和排查,最终解决了这些问题。
题目: 简易猜数字游戏机的设计与实现姓名学院专业班级学号班内序号一、设计课题的任务要求基本要求: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。
课题三:交通灯控制器学院:信息与通信工程学院专业:通信工程姓名:***学号:********课题三:交通灯控制器一.设计课题的任务要求(一)、实验目的1. 熟练掌握 VHDL 语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用 EDA 工具进行自顶向下的电子系统设计方法;(二)、相关知识本实验要利用 CPLD 设计实现一个十字路口的交通灯控制系统,与其他控制系统一样,本系统划分为控制器和受控电路两部分。
控制器使整个系统按设定的工作方式交替指挥车辆及行人的通行,并接收受控部分的反馈信号,决定其状态转换方向及输出信号,控制整个系统的工作过程。
路口交通灯控制系统的有东西路和南北路交通灯 R(红)、Y(黄)、G(绿)三色,所有灯均为高电平点亮。
设置20s 的通行时间和5s 转换时间的变模定时电路,用数码管显示剩余时间。
提供系统正常工作/复位和紧急情况两种工作模式。
(三)、实验任务1.基本任务:设计制作一个用于十字路口的交通灯控制器。
1). 南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20 秒、5 秒和25 秒;2). 当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,继续正常运行;3). 用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间;2.提高要求:1). 增加左、右转弯显示控制功能;2). 紧急状况时增加声光警告功能;3). 自拟其它功能。
二.系统设计(包括设计思路、总体框图、分块设计)(一)设计思路利用有限状态机描绘出交通灯的状态转移图,并设置记录东西和南北路口可通行时间的全局变量count,共设置四个正常状态,状态间的转移以count的值作为判断条件。
对于两种特殊情况:当复位信号reset为高电平时,则回到最初状态;当紧急输入信号emergency 为高电平时,则转移到一特殊状态。
数字电路与逻辑设计实验报告学院:电子工程学院班级:2011211203学号:2011210971班内序号:22姓名:郭一鸣指导老师:陈凌霄目录一、课题名称 (4二、摘要 (4三、设计任务要求 (4四、设计思路,总体结构框图 (41、基本框架 (42、在点阵上显示一个字或图案 (53、控制亮度 (53.1脉冲宽度调制(PWM (53.2 亮度 (64、控制颜色 (65、实现三种模式的滚动 (75.1状态 (75.2如何存储需要译码的字符 (75.3如何进行译码 (76、总体框图 (8五、控制器部分的状态转移图和流程图 (81、状态转移图 (92、流程图 (9六、总体电路和分块电路的设计 (111、总体电路 (112、分块电路 (11(1pwm调制器 (11(2数据选择器(mux (13(3译码器(translate (14(4其他模块 (20七、所实现的功能说明 (211、已完成的基本功能 (212、已完成的扩展功能 (213、器件资源占用情况 (214、关键波形仿真图 (21(1pwm调制器 (21(2数据选择器 (22(3译码器 (22八、故障及问题分析 (28九、总结 (29十、所用元器件及测试仪表清单 (29 十一、完整源程序 (291、总体原理图设计 (292、防抖模块 (293、一级分频器(pwm调制器 (304、二级分频器 (325、三级分频器 (326、模2计数器 (337、模4计数器 (348、模8计数器 (349、滚动状态计数器(模4模32计数器组合 (3510、数据选择器 (3611、译码器 (36十二、参考文献 (43欢迎学弟学妹下载!一、课题名称双色点阵显示控制器二、摘要本实验使用在QuartusII9.1的软件基础上,使用VHDL设计输入和原理图设计输入混合编程,设计了一个8×8双色点阵显示器,实现了控制固定图形的亮度和颜色以及多个字母不同模式的滚动且同时手动、自动变色的功能。
数字电路实验报告简易出租车计价器班级:学号:姓名:一、设计课题的任务要求设计一台出租车计价器,不同情况具有不同的收费标准基本内容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.设计思路首先考虑得到需要一个分频装置,分别输出频率到计数器与控制器,另有计算单元用来计算里程、时间与费用。
Clk为系统时针,rst、start、waiting分别为重置、开始、等待信号,由按键输入系统流程图三、仿真波形及波形分析四、功能说明及资源利用情况开始行车1、功能说明本次试验成果的主要功能为:开始点阵显示“无人状态”。
按下按键“btn1”(start),计价器开始正常工作,六个数码管每两个分别显示“总费用”“行进里程”“等待时间”,同时点阵显示“载客状态”。
行进里程开始累计,里程数在5公里内总价不变,在超过5公里后,每公里增加两元。
在行进中按下按键“btn2”(waiting),等待时间开始累计,等待时间未超过5s时,等待费用为零,所以总价并不累计。
在等待时间超过5s后,每三秒钟总价加一元。
再次按下按键“btn2”(waiting),停止等待状态,继续行进,状态与上述一样。
再次按下按键“btn1”(start),表示客人到达目的地,数码管显示总价,里程以及总等待时间,即开始结算。
北京邮电年夜学之迟辟智美创作数字电路与逻辑设计实验学院:班级:姓名:学号:班内序号:实验一一、实验名称Quartus II 原理图输出法设计(一)半加器二、实验任务要求用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单位.三、设计思路和过程◎设计思路半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路.数据输入:被加数AI、加数BI数据输出:半加和SO、进位CO◎ 设计过程 (1)列出真值表*表中两个输入是加数AI 和BI ,输出有一个是和SO ,另一个是进位CO.(2)根据真值表写出输出逻辑表达式该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下:BI AI SO ⊕=,BI AI CO ⋅=.所以,可以用一个两输入异或门和一个两输入与门实现. ◎实验原理图四、仿真波形图及分析根据仿真波形比较半加器真值表,可以确定电路实现了半加器的功能.但我们也可以发现输出SO 呈现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲.(二)全加器二、实验任务要求用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号. 三、设计思路和过程 ◎设计思路全加器与半加器的区别在于全加器有一个低进位CI ,从外部特性来看,它是一个三输入两输出的器件. ◎设计过程(1)全加器的真值表如下*其中AI 为被加数,BI 为加数,CI 为相邻低位来的进位数.输出本位和为SO ,向相邻高位进位数为CO. (2)根据真值表写出逻辑表达式:CI BI AI SO ⊕⊕=,BI AI CI BI AI CO ⋅+⋅⊕=)(根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器.◎实验原理图四、仿真波形图及分析根据仿真波形比较全加器真值表,可以确定电路实现了全加器的功能.(三)3线—8线译码器二、实验任务要求用3线—8线译码器(74LS138)和逻辑门设计实现函数CBF++=,仿真验证其功能,并下载到实验板测+AACBABCBAC试.要求用拨码开关设定输入信号,发光二极管显示输出信号.三、设计思路和过程◎设计思路74LS138是一个3线—8线的译码器,其输出为低电平有效,使能端G1为高电平有效,G2、G3为低电平有效,当其中一个为高电平,输出端全部为 1.在中规模集成电路中译码器的几种型号里,74LS138使用最广泛.要实现的函数用最小项暗示如下:F(C,B,A)=∑m(0,2,4,7)只要将相应输出用一个四输入与非门实现即可.◎注意(1)74LS138的输出是低电平有效,故实现逻辑功能时,输出端不成接或门及或非门(因为每次仅一个为低电平,其余皆为高电平);(2)74LS138与前面分歧的是,其有使能端,故使能端必需加以处置,否则无法实现需要的逻辑功能. ◎实验原理图四、仿真波形图及分析当且仅当ABC 输入为000、010、100、111时,F=1;可知电路实现了函数CBA A B C A B C A B C F +++=.实验二一、实验名称VHDL 组合逻辑电路设计(一)奇校验器二、实验任务要求用VHDL 语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出为‘0’,仿真实现验证其功能,并下载到实验板测试.要求用拨码开关设定输入信号,发光二极管显示输出信号.三、设计思路和过程输入元素:a3,a2,a1,a0 输出元素:b四、VHDL法式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY hy_check ISPORT(a: IN STD_LOGIC_VECTOR (3 downto 0); b: OUT STD_LOGIC);end hy_check;ARCHITECTURE hy_arch OF hy_check ISPROCESS(a)BEGINCASE a IS WHEN"0000" => b <='0'; WHEN"0001" => b <='1'; WHEN"0010" => b <='1'; WHEN"0011" => b <='0'; WHEN"0100" => b <='1'; WHEN"0101" => b <='0'; WHEN"0110" => b <='0'; WHEN"0111" => b <='1'; WHEN"1000" => b <='1'; WHEN"1001" => b <='0'; WHEN"1010" => b <='0'; WHEN"1011" => b <='1'; WHEN"1100" => b <='0'; WHEN"1101" => b <='1'; WHEN"1110" => b <='1'; WHEN"1111" => b <='0'; END CASE;END PROCESS;五、仿真波形图及分析根据仿真波形比较奇校验码的真值表,可以确定电路实现了奇校验器的功能.(二)数码管译码器二、实验任务要求用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试.要求用拨码开关设定输入信号,7段数码管显示输出信号.三、设计思路和过程输入元素:A3—A0输出元素:B6—B0,C5—C0*真值表由数码管显示的原理确定.四、VHDL法式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY hy_encoder1 ISPORT(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 hy_encoder1;ARCHITECTURE encoder_arch OF hy_encoder1 IS BEGINPROCESS(A)BEGINC<="101111";CASE A ISWHEN"0000"=>B<="1111110";--0 WHEN"0001"=>B<="0110000";--1 WHEN"0010"=>B<="1101101";--2 WHEN"0011"=>B<="1111001";--3 WHEN"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<="ZZZZZZZ";END CASE;END PROCESS;END encoder_arch;五、仿真波形图及分析根据仿真波形比较数码管译码器的真值表,可以确定实现了数码管译码器的功能.(三)8421码到余三码二、实验任务要求用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试.要求用拨码开关设定输入信号,发光二极管显示输出信号..三、设计思路和过程输入数据:A3—A0输出数据:B3—B0*余三码就是在8421码的基础上+3.四、VHDL法式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY hy_trans1 ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END hy_trans1;ARCHITECTURE trans_ex3 OF hy_trans1 IS BEGINPROCESS(A)BEGINCASE A ISWHEN "0000"=>B<="0011";WHEN "0001"=>B<="0100";WHEN "0010"=>B<="0101";WHEN "0011"=>B<="0110";WHEN "0100"=>B<="0111";WHEN "0101"=>B<="1000";WHEN "0110"=>B<="1001";WHEN "0111"=>B<="1010";WHEN "1000"=>B<="1011";WHEN "1001"=>B<="1100";WHEN OTHERS=>B<="ZZZZ";END CASE;END PROCESS;END trans_ex3;五、仿真波形图及分析根据仿真波形比较真值表,可以确定电路实现了8421码到余三码的转换.实验三一、实验名称VHDL时序逻辑电路设计(一)分频器二、实验任务要求用VHDL语言设计实现一个分频输出信号占空比为50%的分频器.要求在Quartus II 平台上设计法式并仿真验证设计.三、设计思路和过程◎设计思路确定分频系数N后,以21-N为计数标准,一旦计数满21-N,输出n Q.◎设计过程选取N=20,以0-4计数,到4取反.输入元素:clk,clear输出元素:clk_out四、VHDL法式LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL;USE IEEE. STD_LOGIC_UNSIGNED. ALL; ENTITY hy_div ISPORT(clk,clear:IN STD_LOGIC;clk_out:OUT STD_LOGIC);END hy_div;ARCHITECTURE a OF hy_div ISSIGNAL tmp:INTEGER RANGE 0 TO 9; SIGNAL clktmp:STD_LOGIC;BEGINPROCESS(clear,clk)BEGINIF clear='0' THENtmp<=0;ELSIF clk'event AND clk='1' THENIF tmp=9 THENtmp<=0; clktmp<=NOT clktmp;ELSE tmp<=tmp+1;END IF;END IF;END PROCESS;clk_out<=clktmp;END a;五、仿真波形图及分析分析仿真波形,可以确定电路实现了20倍分频的功能.(二)十进制计数器二、实验任务要求用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能.三、设计思路和过程◎设计思路满10异步复位.◎设计过程输入元素:clk,clear输出元素:q3,q2,q1,q0四、VHDL法式LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL;USE IEEE. STD_LOGIC_ARITH. ALL; ENTITY hy_count ISPORT(clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END hy_count;ARCHITECTURE a OF hy_count ISSIGNAL cn:INTEGER RANGE 0 TO 9; BEGINPROCESS(clk)BEGINIF clear='0' THENcn<=0;elsIF(clk'event AND clk='1') THENIF cn=9 THENcn<=0;ELSE cn<=cn+1;END IF;END IF;END PROCESS;q<=CONV_STD_LOGIC_VECTOR(cn,4);END a;五、仿真波形图及分析分析仿真波形,可以确定电路实现了十进制计数器的功能.(三)十进制计数器的数码管显示二、实验任务要求将2中的8421码十进制计数器下载到实验板测试.要求用按键设定输入信号,发光二极管显示输入信号.三、设计思路和过程◎设计思路此系统中应包括分频器、十进制计数器、数码管译码器.◎设计过程输入元素:ain,bin,cin输出元素:cout(0-6),cat(0-5)四、VHDL法式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hy_union ISPORT(ain:IN STD_LOGIC;bin:IN STD_LOGIC;cin:IN STD_LOGIC;cout:OUT STD_LOGIC_VECTOR(6 downto 0); cat:OUT STD_LOGIC_VECTOR(5 downto 0) );end hy_union;ARCHITECTURE zonghe_arch OF hy_union IS COMPONENT div50m——分频器PORT(clk_in : in std_logic;clk_out : out std_logic);END COMPONENT;COMPONENT hy_count——计数器PORT(clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 downto 0));END COMPONENT;COMPONENT yima——数码管译码器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 COMPONENT;SIGNAL d,e:STD_LOGIC;SIGNAL f:STD_LOGIC_VECTOR(3 downto 0);BEGINu1:div50m PORT MAP(clk_in=>ain,clk_out=>d);u2:hy_count PORT MAP(clk=>d,clear=>cin,q=>f);u3:yima PORT MAP(a=>f,b=>cout,c=>cat);END zonghe_arch;实验四一、实验名称数码管扫描显示控制器设计与实现二、实验任务要求用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这六个分歧的数字图形到六个数码管上,仿真验证其功能,并下载到实验板测试.三、设计思路和过程◎设计思路多个数码管静态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率年夜于50Hz,将看不到闪烁现象.当闪烁显示的发光二极管闪烁频率较高时,我们将观察到继续点亮的现象.同理,当多个数码管依次显示,当切换速度足够快时,我们将观察到所有数码管都是同时在显示.一个数码管要稳定显示要求显示频率年夜于50Hz,那么六个数码管则需要50*6=300Hz以上才华看到继续稳定点亮的现象.◎设计过程数据输入:clk,clear数据输出:B(0-6),C(0-5)四、VHDL法式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HY ISPORT(clk,clear:IN STD_LOGIC;B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END HY;ARCHITECTURE behave OF HY ISSIGNAL tmp:INTEGER RANGE 0 TO 5;SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);——count决定哪个数码管有示数SIGNAL f_temp:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINp1:PROCESS(clk)——排次第BEGINIF clk'EVENT AND clk='1' THENIF tmp=5 THENtmp<=0;ELSEtmp<=tmp+1;END IF;END IF;END PROCESS p1;p2:PROCESS(tmp)——数码管显示数BEGINIF (clear='0')THEN count<="111111";CASE tmp IS——依次逐个输出0-5WHEN 0=>count<="011111";f_temp<="1111110";--0WHEN 1=>count<="101111";f_temp<="0110000";--1WHEN 2=>count<="110111";f_temp<="1101101";--2WHEN 3=>count<="111011";f_temp<="1111001";--3WHEN 4=>count<="111101";f_temp<="0110011";--4WHEN 5=>count<="111110";f_temp<="1011011";--5END CASE;else count<="111111";END IF;END PROCESS p2;C<=count;B<=f_temp;END behave;五、仿真波形图分析波形易知,C确实实现了六个数码管的交替显示,B则控制着各对应管输出0-5相应的数字.数电实验总结【故障和问题分析】故障一:仿真时设置clk脉冲宽度为1us,报错解决法子:经检查发现,未更改end time设置,把end time重置为50us.故障二:下载后,按键没有反应.解决法子:检验相应管脚是否设置正确,检查管脚是否失效,下载把持是否正确.故障三:数码管显示乱码.解决法子:一开始我直接检查代码,检查了好久都没发现毛病,后来换了个实验板,重新下载后就好了.另:实验过程中,唯一的问题是对多输入电路,静态功能冒险还是会存在的,在这种情况下应该加入选通脉冲来消除静态功能冒险.【总结与结论】本学期的四次实验均较为简单,只要认真听讲、细心把持,基本没有太年夜的问题.难点主要是对VHDL语言的学习和对Quartus II软件的熟悉. 起初接触Quartus II,感觉毫无头绪.在预习过课本之后,再结合数字电路理论课上所学的知识,终于有了一些思路.顺着这思路,对所求元件进行了相应的功能设计,然后开始了相应代码的编写.在编写过程中,遇到了很多关于VHDL语言的困扰,经过不竭的调整和适应,终于掌握了相关的语法规则.通过这次实验,我收获最多的还是熟悉了数字电路的设计过程,之前所学习的还是理论上的知识.理论固然重要,但一味纸上谈兵,是不成能掌握实际技能的.希望今后能够多一些类似的实验、实践活动的机会,让我们提高入手能力、培养实用技能.。
北京邮电大学电子电路综合设计实验报告课题名称:函数信号发生器的设计学院:信息与通信工程学院 班级:2013211123姓名:周亮学号:2013211123班内序号:9一、 摘要方波与三角波发生器由集成运放电路构成,包括比较器与RC积分器组成。
方波发生器的基本电路由带正反馈的比较器及RC组成的负反馈构成;三角波主要由积分电路产生。
三角波转换为正弦波,则是通过差分电路实现。
该电路振荡频率和幅度便于调节,输出方波幅度大小由稳压管的稳压值决定,方波经积分得到三角波;而正弦波发生电路中两个电位器实现正弦波幅度与电路的对称性调节,实现较理想的正弦波输出波形。
二、关键词: 函数信号发生器 方波 三角波 正弦波三、设计任务要求1.基本要求:设计制作一个函数信号发生器电路,该电路能够输出频率可调的正弦波、三角波和方波信号。
(1) 输出频率能在1-‐10KHz范围内连续可调,无明显失真。
(2) 方波输出电压Uopp=12V(误差小于20%),上升、下降沿小于10us。
(3) 三角波Uopp=8V(误差小于20%)。
(4) 正弦波Uopp1V,无明显失真。
2. 提高要求:(1) 输出方波占空比可调范围30%-‐70%。
(2) 三种输出波形的峰峰值Uopp均可在1V-‐10V内连续可调电源电路 方波-‐三角波发生电路 正弦波发生电路方波输三角波输正弦波输现输出信号幅度的连续调节。
利用二极管的单向导通性,将方波-‐三角波中间的电阻改为两个反向二极管一端相连,另一端接入电位器,抽头处输出的结构,实现占空比连续可调,达到信号发生器实验的提高要求。
五、分块电路和总体电路的设计过程1. 方波-‐三角波产生电路设计过程:①根据所需振荡频率的高低和对方波前后沿陡度的要求,选择电压转换速率S R合适的运算放大器。
方波要求上升、下降沿小于10us,峰峰值为12V。
LM741转换速率为0.7V/us,上升下降沿为17us,大于要求值。
数字电路综合实验报告 简易智能密码锁
一、实验课题及任务要求 设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正 确,密码锁打开,密码输入错误进行警示。 基本要求: 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行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。由此可确定按键位置。
(X为无效按键) 2.数码管模块 本实验采用六位七段共阴极数码管,通过选通6个位选管脚,向相应的IO口送低电平来点亮其中任何一位数码管,因为现在采用四位密码锁,所以只是用了其中四个,最高位两位数码管位选全部置1. 如下附上7段共阴极数码管真值表
3.点阵模块 点阵模块,共由8*8*2个发光二极管组成,行低电平有效,列高电平有效。要求在开锁模式和闭锁模式显示不同的图案,则先将要显示的每幅图像画8*8个小方格的矩形框中,再在有图案下落处的小方格里填上“1”,无图案处填上“0”,这样就形成了与图案所对应的二
X 7 8 9 X 4 5 6 X 1 2 3 X X 0 x
消抖 键盘译码 按键储存
键盘扫描 进制数据在该矩形框上的分布。当闭锁时以红色点阵显示,此时绿色点阵全部置0,反之亦然。 4.报警模块 当报警程序被调用,蜂鸣器输出高电平进行报警,表示输入密码错误 5.防抖 按键输入只有为15ms以上的高电平时才会读出按键值从而消除电路中的抖动。 6.控制中心 lockmode='1表示关锁,此时点阵显示落锁,按任何键都不会显示密码,清零或者开锁,在此时输入密码kwei从0开始不断加1,输入的密码位数在数码管上依次左移,当输入密码m与寄存器中预设密码mm相同时,按下确认键btn2切换为开锁状态,lockmode=0,此时按下btn1表示清零,恢复为初始密码0000,按set键寄存器内密码,按下btnloc切换为关锁状态。
三、仿真波形分析 在QUARTUS2中应用系统自带的功能进行波形仿真,这里采用了分模块仿真。 主程序仿真 在主要功能程序方面波形如下,在初始化模式按下set键系统进入修改密码状态,setmode波形显示高电平。为仿真方便,仅使kbin(即行输入信号)在1011和1111两个状态下相互转换,在不同的kbout(即列扫描输出信号)下分别对应4、5、6、7四个数字,故密码寄存器m[x]为输入的修改后的密码。 按下btn2(确认键)确认密码后,setmode变为低电平,即修改密码状态结束。 按下btn1时清零,密码寄存器取值还原为0000,至此均为开锁状态下的操作,lockmode一直为低电平。 按下闭锁键btnloc后,lockmode从0跳变到1,由此进入闭锁模式。
按键消抖模块仿真 当按下键时得到的高电平为输入x,持续一定时间后方可输出一个高电平,而无论按下的时间多长,都只输出一个高电平y,从而实现消除按键电路中的抖动。 分频模块仿真 为仿真方便,改变分频比。原程序在50Mhz时钟输入下,输出分别为1Mhz、 200hz、1000hz、500hz,分别用于键盘扫描、消抖模块输入、点阵扫描以及数码管扫描。
数码管模块仿真 由smgcatout输出可以看出低四位数码管依次选通。第i位选通时,smgzf为m[i]的七段数码管的译码值。 点阵模块仿真 当lockmode=1时dzcolr全部为0仅dzcolg显示图案; 当lockmode=0时dzcolg全部为0由dzcolr显示图案;而dzrow一直在进行行扫描,形成了两种不同颜色点阵。 报警模块仿真 当bj=0时,fmq为0;bj=1时,fmq将clk分频后输出,即蜂鸣器发出声响。 四、源程序 -----------------------顶层文件------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity lock is port (clk : in std_logic; setmode:out std_logic; lockmode:out std_logic; set:in std_logic; btn1,btn2,btnloc:in std_logic; smgzf: out std_logic_vector(6 downto 0); smgcatout:out std_logic_vector(5 downto 0); kbin: in std_logic_vector(3 downto 0); kbout: buffer std_logic_vector(3 downto 0); dzrow,dzcolr,dzcolg: out std_logic_vector(7 downto 0); fmq: out std_logic ); end lock;
architecture behave of lock is signal setm: std_logic; signal lockm: std_logic; signal lbj: std_logic; signal lkwei: integer range 0 to 4; signal lm1,lm2,lm3,lm4:integer range 0 to 9; signal clk_1: std_logic; --1MHz signal clk_2: std_logic; --200Hz signal clk_3: std_logic; --1000Hz signal clk_4: std_logic; --500Hz component kb is -----------键盘模块 port (clk : in std_logic; set:in std_logic; btn1,btn2,btnloc:in std_logic; kbin: in std_logic_vector(3 downto 0); kbout: buffer std_logic_vector(3 downto 0); bj:out std_logic; setmod:out std_logic; lockmod:out std_logic; kbwei:out integer range 0 to 4; m1x,m2x,m3x,m4x:out integer range 0 to 9 ); end component;
component smg is -------------数码管显示模块 port (clk : in std_logic; setmode:in std_logic; lockmode:in std_logic; kwei:in integer range 0 to 4; m1,m2,m3,m4:in integer range 0 to 9; smgzf: out std_logic_vector(6 downto 0); smgcatout:out std_logic_vector(5 downto 0)
); end component;
component dz is -----点阵模块 port (clk : in std_logic; --set:in std_logic; lockmode:in std_logic; dzrow,dzcolr,dzcolg: out std_logic_vector(7 downto 0) ); end component;
component alarm is ------报警模块 port (clk : in std_logic; bj:in std_logic; fmq: out std_logic ); end component;
component fenpin is -------分频模块 port(clk: in std_logic; clk_out1: out std_logic; clk_out2: out std_logic; clk_out3: out std_logic; clk_out4: out std_logic); end component;
begin a1: fenpin port map(clk=>clk,clk_out1=>clk_1,clk_out2=>clk_2, clk_out3=>clk_3,clk_out4=>clk_4); u1: kb