当前位置:文档之家› FPGA实验二:拨动开关的消抖电路的设计

FPGA实验二:拨动开关的消抖电路的设计

FPGA实验二:拨动开关的消抖电路的设计
FPGA实验二:拨动开关的消抖电路的设计

实验报告

课程名称:_____FPGA实验______指导老师:__竺红卫/陈宏__成绩:__________________

实验名称:____拨动开关的消抖电路的设计___实验类型:_FPGA实验_同组学生姓名:__

一、实验目的和要求(必填)

1. 熟悉软件对于消抖的实现原理;

2. 熟悉实验板拨动开关的工作方法。

二、实验内容和原理(必填)

实验板具有4个滑动开关,当开关关上或上拉时,FPGA的管脚连接3.3V电源,即逻辑高电平。断开或下拉时,FPGA管脚接地,逻辑低电平。一般开关的机械闭合时间为2ms,这里没有使用活动的回弹线路,尽管这种线路可以很容易地加到FPGA上。

实验需要实现的功能是:当RESET为低电平,不论SW为低电平或高电平,LED保持全灭;当RESET 为高电平,LED全亮;当RESET保持高电平时,每次SW由高电平变为低电平,对应的LED状态改变,而当SW由低电平变为高电平,对应的LED状态保持不变。

对LED引脚输出高电平时,LED点亮,,反之LED灭。

三、主要仪器设备(必填)

1. 电脑一台;

2. 实验板一块,Xilinx Spartan-3E;

3. 实验板电源一只;

4. 实验板连接电脑的下载线一根。

四、操作方法和实验步骤

对于程序的各个步骤,如新建项目、新建Verilog HDL、新建.ucf文件、Synthesize、Implement Design、Generate Programming File、Configure Target Device等等,在实验一中已经展示过,每一次实验的基本操作步骤都是差不多的,故这里不再重复阐述。

本次实验共有5个源代码需要编写、运行并解释:

1)未加debounce电路的源代码;

2)加了debounce电路的源代码;

3)由未加debounce电路的源代码出发,只添加锁存器的源代码;

4)由未加debounce电路的源代码出发,只添加滤波器的源代码;

5)加了debounce电路,并且一个开关控制3个灯,向上拨动开关时灭,向下亮的源代码。

前四种情况的.ucf文件如下:

NET "CLK" LOC="C9";

NET "led_d3" LOC="C11";

NET "led_d4" LOC="F11";

NET "led_d5" LOC="E11";

NET "RST_N" LOC="L13";

NET "sw1" LOC="L14";

NET "sw2" LOC="H18";

NET "sw3" LOC="N17";

最后一种情况的.ucf文件如下:

NET "CLK" LOC="C9";

NET "led_d3" LOC="C11";

NET "led_d4" LOC="F11";

NET "led_d5" LOC="E11";

NET "RST_N" LOC="L13";

NET "sw1" LOC="L14";

对于最后一种情况,只使用sw1同时控制板上的LD2、LD3、LD4。

五、实验源代码、现象和解释

1)未加debounce电路

源代码:

`timescale 1ns/1ns

module sw_led(clk, rst_n, sw1, sw2, sw3, led_d3, led_d4, led_d5);

input clk;

input rst_n;

input sw1,sw2,sw3; //低电平有效

output led_d3;

output led_d4;

output led_d5;

reg d1,d2,d3;

always @ (posedge clk or negedge rst_n)

if ( !rst_n )

begin d1 <= 1'b0;

d2 <= 1'b0;

d3 <= 1'b0;

end

else

begin

if ( !sw1 ) d1 <= ~d1;

if ( !sw2 ) d2 <= ~d2;

if ( !sw3 ) d3 <= ~d3;

end

assign led_d5 = d1 ? 1'b1 : 1'b0;

assign led_d3 = d2 ? 1'b1 : 1'b0;

assign led_d4 = d3 ? 1'b1 : 1'b0;

endmodule

实验现象:

当RESET关闭,不论SW状态如何,LED始终保持灭。当RESET打开,LED立即全亮,此时再拨动SW,当SW向下拨,LED半亮,当SW向上拨,LED为全亮或全灭,出现两种状态的概率大致相同。

解释:

当SW为低电平时,LED在以50MHz的频率闪烁,故表现为半亮;当SW向上拨,LED跟随拨动动作立即停止翻转,故LED为全亮或全灭,且两种状态概率相等。

2)加了debounce电路

源代码:

`timescale 1ns/1ns

module sw_debounce(clk, rst_n, sw1, sw2, sw3, led_d3, led_d4, led_d5);

input clk;

input rst_n;

input sw1,sw2,sw3; //低电平有效

output led_d3;

output led_d4;

output led_d5;

// ---------------------------------------------------------------------------

// 通过降采样对sw1~sw3的输入做低通滤波,将其高频分量滤除,得到low_sw值

// ---------------------------------------------------------------------------

reg [19:0] cnt;

always @ (posedge clk or negedge rst_n)

if (!rst_n)

cnt <= 20'd0;

else

cnt <= cnt + 1'b1;

reg [2:0] low_sw;

always @(posedge clk or negedge rst_n)

if (!rst_n)

low_sw <= 3'b111;

else if (cnt == 20'hfffff)

low_sw <= {sw3,sw2,sw1};

// ---------------------------------------------------------------------------

// 以下的语句描述的是锁存器部分,将按键输入锁存一个周期后再与原输入信号进

//行组合逻辑运算得到新的输入信号

// ---------------------------------------------------------------------------

reg [2:0] low_sw_r;

always @ ( posedge clk or negedge rst_n )

if (!rst_n)

low_sw_r <= 3'b111;

else

low_sw_r <= low_sw;

wire [2:0] led_ctrl = low_sw_r[2:0] & ( ~low_sw[2:0]); //这里捕获的是下降沿!

reg d1;

reg d2;

reg d3;

always @ (posedge clk or negedge rst_n)

if (!rst_n)

begin

d1 <= 1'b0;

d2 <= 1'b0;

d3 <= 1'b0;

end

else

begin

if ( led_ctrl[0] ) d1 <= ~d1;

if ( led_ctrl[1] ) d2 <= ~d2;

if ( led_ctrl[2] ) d3 <= ~d3;

end

assign led_d5 = d1 ? 1'b1 : 1'b0;

assign led_d3 = d2 ? 1'b1 : 1'b0;

assign led_d4 = d3 ? 1'b1 : 1'b0;

endmodule

实验现象:

能够完整实现要求的实验功能。当RESET为低电平,不论SW为低电平或高电平,LED保持全灭;当RESET为高电平,LED全亮;当RESET保持高电平时,每次SW由高电平变为低电平,对应的LED 状态改变,而当SW由低电平变为高电平,对应的LED状态保持不变。

解释:

加滤波器实现的功能是消除高频按键抖动对LED控制的影响;加锁存器实现的功能是使LED在SW 信号遇到下降沿时翻转。

3)由未加debounce电路的源代码出发,只添加锁存器

源代码:

`timescale 1ns/1ns

module sw_debounce(clk, rst_n, sw1, sw2, sw3, led_d3, led_d4, led_d5);

input clk;

input rst_n;

input sw1,sw2,sw3; //低电平有效

output led_d3;

output led_d4;

output led_d5;

reg [2:0] low_sw;

always @(posedge clk or negedge rst_n)

if (!rst_n)

low_sw <= 3'b111;

else

low_sw <= {sw3,sw2,sw1};

// ---------------------------------------------------------------------------

// 以下的语句描述的是锁存器部分,将按键输入锁存一个周期后再与原输入信号进

//行组合逻辑运算得到新的输入信号

// ---------------------------------------------------------------------------

reg [2:0] low_sw_r;

always @ ( posedge clk or negedge rst_n )

if (!rst_n)

low_sw_r <= 3'b111;

else

low_sw_r <= low_sw;

wire [2:0] led_ctrl = low_sw_r[2:0] & ( ~low_sw[2:0]); //这里捕获的是下降沿!

reg d1;

reg d2;

reg d3;

always @ (posedge clk or negedge rst_n)

if (!rst_n)

begin

d1 <= 1'b0;

d2 <= 1'b0;

d3 <= 1'b0;

end

else

begin

if ( led_ctrl[0] ) d1 <= ~d1;

if ( led_ctrl[1] ) d2 <= ~d2;

if ( led_ctrl[2] ) d3 <= ~d3;

end

assign led_d5 = d1 ? 1'b1 : 1'b0;

assign led_d3 = d2 ? 1'b1 : 1'b0;

assign led_d4 = d3 ? 1'b1 : 1'b0;

endmodule

实验现象:

当RESET关闭时,LED始终全灭。当RESET打开时,若此时SW为低电平,LED立即全亮;然后,保持RESET为高电平,每次拨动SW(上升沿或下降沿),LED状态有时变有时不变,并且要么全亮,要么全灭。

SW向上拨时,LED状态通常不会改变,但偶尔会变。

SW向下拨时,LED状态通常会改变,但偶尔不会变。

有时候拨动SW,LED会快速地闪烁一下,但最终状态不变。

解释:

拨动开关状态改变时,会产生按键抖动,如下图:

对于这一段源代码,当sw信号捕捉到下降沿时,LED状态改变。而由于有按键抖动现象,加上此时sw信号的采样频率过高,为50MHz,因此sw很容易在开关向下拨或向上拨时捕捉到一个或多个下降沿,导致LED状态发生一次或多次翻转。另外,sw在开关向下拨时比在开关向上拨时更容易捕捉到下降沿,因此当开关向下拨时比起开关向上拨时,LED状态发生改变的频率更大。

4)由未加debounce电路的源代码出发,只添加滤波器

源程序:

`timescale 1ns/1ns

module sw_debounce(clk, rst_n, sw1, sw2, sw3, led_d3, led_d4, led_d5);

input clk;

input rst_n;

input sw1,sw2,sw3; //低电平有效

output led_d3;

output led_d4;

output led_d5;

// ---------------------------------------------------------------------------

// 通过降采样对sw1~sw3的输入做低通滤波,将其高频分量滤除,得到low_sw值

// ---------------------------------------------------------------------------

reg [19:0] cnt;

always @ (posedge clk or negedge rst_n)

if (!rst_n)

cnt <= 20'd0;

else

cnt <= cnt + 1'b1;

reg [2:0] low_sw;

always @(posedge clk or negedge rst_n)

if (!rst_n)

low_sw <= 3'b111;

else if (cnt == 20'hfffff)

begin

low_sw <= {sw3,sw2,sw1};

end

reg d1;

reg d2;

reg d3;

always @ (posedge clk or negedge rst_n)

if (!rst_n)

begin

d1 <= 1'b0;

d2 <= 1'b0;

d3 <= 1'b0;

end

else

begin

if ( !low_sw[0] ) d1 <= ~d1;

if ( !low_sw[1] ) d2 <= ~d2;

if ( !low_sw[2] ) d3 <= ~d3;

end

assign led_d5 = d1 ? 1'b1 : 1'b0;

assign led_d3 = d2 ? 1'b1 : 1'b0;

assign led_d4 = d3 ? 1'b1 : 1'b0;

endmodule

实验现象:

当RESET关闭时,LED始终全灭。当RESET打开时,若此时SW为低电平,LED立即全亮;此时当SW向上拨,LED总为灭;当SW向下拨,LED总为半亮。

解释:

当SW为低电位时,low_sw为0,LED以50MHz的频率闪烁,故表现为半亮。当SW为高电平时,LED总为灭,无法解释。

5)加了debounce电路,并且一个开关控制3个灯,向上拨动开关时灭,向下亮

源代码:

`timescale 1ns/1ns

module sw_debounce(clk, rst_n, sw1, led_d3, led_d4, led_d5);

input clk;

input rst_n;

input sw1; //低电平有效

output led_d3;

output led_d4;

output led_d5;

// ---------------------------------------------------------------------------

// 通过降采样对sw1的输入做低通滤波,将其高频分量滤除,得到low_sw值

// ---------------------------------------------------------------------------

reg [19:0] cnt;

always @ (posedge clk or negedge rst_n)

if (!rst_n)

cnt <= 20'd0;

else

cnt <= cnt + 1'b1;

reg low_sw;

always @(posedge clk or negedge rst_n)

if (!rst_n)

low_sw <= 1'b1;

else if (cnt == 20'hfffff)

low_sw <= sw1;

// ---------------------------------------------------------------------------

// 以下的语句描述的是锁存器部分,将按键输入锁存一个周期后再与原输入信号进

//行组合逻辑运算得到新的输入信号

// ---------------------------------------------------------------------------

reg low_sw_r;

always @ ( posedge clk or negedge rst_n )

if (!rst_n)

low_sw_r <= 1'b1;

else

low_sw_r <= low_sw;

wire led_ctrl1 = low_sw_r & ( ~low_sw); //这里捕获的是下降沿!

wire led_ctrl2 = ( ~low_sw_r ) & low_sw;

reg d1;

always @ (posedge clk or negedge rst_n)

if (!rst_n)

d1 <= 1'b0;

else

begin

if ( led_ctrl1 ) d1 <= 1'b1;

else if ( led_ctrl2 ) d1 <=1'b0;

end

assign led_d5 = d1 ? 1'b1 : 1'b0;

assign led_d3 = d1 ? 1'b1 : 1'b0;

assign led_d4 = d1 ? 1'b1 : 1'b0;

endmodule

实验现象:

能完整实现所要求的实验现象。当RESET关闭时,三个LED始终全灭。当RESET打开时,若此时SW1为低电平,三个LED立即全亮;并且,当SW1向上拨时,三个LED始终灭,当SW1向下拨时,三个LED始终亮。

解释:

本程序修改了原来带有debounce电路的代码,增加了对上升沿的捕获。当捕获到下降沿,LED亮;当捕获到上升沿,LED灭。

六、疑问与思考

在上一部分,对于由未加debounce电路的源代码出发,只添加滤波器的电路,当RESET向上拨后,SW为高时,LED总为灭。为了解释这一现象,我们做了如下的试验:

1.修改cnt起始值或cnt计数周期,LED状态不变。改变cnt变化步长,有时整个系统会奔溃(这是

因为选择不当的变化步长会使cnt跳过条件判断语句中的cnt值。)

2.RESET为低电位时LED的初始状态,如改为亮,结果当RESET向上拨后,SW为高时,LED的

状态就变为亮了。

换言之,改变LED的初始状态会改变SW向上拨时的状态,但改变cnt则不会,这一现象令人迷惑,难以解释。可以考虑通过观察波形仿真来寻求解释方案。

fpga数字钟课程设计报告

f p g a数字钟课程设计报告 Prepared on 24 November 2020

课程设计报告 设计题目:基于FPGA的数字钟设计 班级:电子信息工程1301 姓名:王一丁 指导教师:李世平 设计时间:2016年1月 摘要 EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。 关键词:EDA VHDL语言数字钟 目录 摘要 1 课程设计目的 2 课程设计内容及要求

设计任务 设计要求 3 VHDL程序设计 方案论证 系统结构框图 设计思路与方法 状态控制模块 时分秒模块 年月日模块 显示模块 扬声器与闹钟模块 RTL整体电路 4 系统仿真与分析 5 课程设计总结,包括.收获、体会和建议 6 参考文献 1 课程设计目的 (1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。 (2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。 (3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。

以89C51单片机为核心可控延时开关(修改)

2009级机电一体化专业综合训练单片机的可控延时开关 学生学号:0904021244 学生姓名:薄东凯 指导教师:张武坤 机电工程系 2011年 11月 10 日

目录 摘要 (3) 关键词 (3) 第一章原理描述 (4) 1.1 方案认证 (4) 1.2 基本电路 (6) 1.2.1 最小硬件系统 (6) 1.2.2 数码管动态显示 (7) 1.3 电源电路原理 (10) 1.4 控制开关电路 (13) 第二章软件部分 (14) 2.1 程序框图 (14) 2.2.1 一般软件的结构 (14) 2.2.2 数码管动态显示 (14) 2.2 按键功能设置 (16) 2.2.1 外部中断服务程序框图 (16) 2.2.2 按键功能简介 (17) 第三章调试完善系统 (18) 3.1 硬件调试 (18) 3.2 软件调试 (19) 第四章收获与体会 (20)

致谢: (22) 参考文献: (23) 附录 附录1:可控延时开关主程序 (24) 附录2:电路总原理图 (29) 附录3:元件清单 (30)

单片机的可控延时开关 石家庄职业技术学院薄东凯0904021244 Shijiazhuang vocational and technical college BoDongKai 0904021244 摘要: 本课题所研究的可控延时开关是以89C51单片机为核心,通过单片机内部的定时来实现控制延时的功能。它是由最小系统,显示电路,键盘电路等硬件电路和现代应用最广泛的单片机软件系统组合在一起的,使其具有一定的智能化,起到了节能和延寿的作用、并且与现有的技术相比,的具有使用方便,结构简单,可靠性高,成本低。 Pick to: The subject of the controllable delay switch is based on 89 C51 microcontroller as the core, the single chip microcomputer to control the timing of internal realize the function of the delay. It is by the smallest system, display circuit, the keyboard circuit hardware circuit and the modern one of the most widely applied single-chip microcomputer software system together, make its have certain intelligent, and played the energy saving and prolong life function, and with the existing technology, compared with the easy to use, simple structure, high reliability and low cost.

实验五--时序逻辑电路实验报告

实验五时序逻辑电路(计数器和寄存器)-实验报告 一、实验目的 1.掌握同步计数器设计方法与测试方法。 2.掌握常用中规模集成计数器的逻辑功能和使用方法。 二、实验设备 设备:THHD-2型数字电子计数实验箱、示波器、信号源 器件:74LS163、74LS00、74LS20等。 三、实验原理和实验电路 1.计数器 计数器不仅可用来计数,也可用于分频、定时和数字运算。在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。 2.(1) 四位二进制(十六进制)计数器74LS161(74LS163) 74LSl61是同步置数、异步清零的4位二进制加法计数器,其功能表见表5.1。 74LSl63是同步置数、同步清零的4位二进制加法计数器。除清零为同步外,其他功能与74LSl61相同。二者的外部引脚图也相同,如图5.1所示。 表5.1 74LSl61(74LS163)的功能表 清零预置使能时钟预置数据输入输出 工作模式R D LD EP ET CP A B C D Q A Q B Q C Q D 0 ××××()××××0 0 0 0 异步清零 1 0 ××D A D B D C D D D A D B D C D D同步置数 1 1 0 ××××××保持数据保持 1 1 ×0 ×××××保持数据保持 1 1 1 1 ××××计数加1计数3.集成计数器的应用——实现任意M进制计数器 一般情况任意M进制计数器的结构分为3类,第一类是由触发器构成的简单计数器。第二类是由集成二进制计数器构成计数器。第三类是由移位寄存器构成的移位寄存型计数器。第一类,可利用时序逻辑电路的设计方法步骤进行设计。第二类,当计数器的模M较小时用一片集成计数器即可以实现,当M较大时,可通过多片计数器级联实现。两种实现方法:反馈置数法和反馈清零法。第三类,是由移位寄存器构成的移位寄存型计数器。 4.实验电路: 十进制计数器 同步清零法 同步置数法

FPGA设计的报告课程设计

FPGA课程设计 实 验 报 告

实验一:设计一个可控的100进制可逆计数器 一、实验要求 用DE2-115开发板下载。 (1)计数器的时钟输入信号周期为200ns。 (2)以十进制形式显示。 (3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用 clr plus minus 功能 0 ××复位为0 1 1 0 递增计数 1 0 1 递减计数 1 1 1 暂停计数 二、关键词 可控制、可逆、100进制、复位、暂停、递增、递减 三、内容摘要 module updown_count(qout,reset,clk,plus,minus); output[7:0] qout;/*定义一个8位的输出,其目的是 低四位和高四位分别表示计数器的个位和十位。*/ input clk,plus,minus,reset;//定义四个输入,时钟,加计数,减计数和清零 reg[7:0] qout;//qout的数据类型为寄存器型 always @(posedge clk)//当clk上升沿到来时执行一遍下列程序 begin if(!reset) qout<=0;//当reset为低电平时,计数器执行清零功能,否则跳过else begin case({minus,plus})//case语句模块,包含加,减和暂停四个模块 2'b10: if (qout[3:0]==0)//判断个位是否为零,若不为零,跳到个位减一begin qout[3:0]<=9;//给个位赋值 if(qout[7:4]==0) qout[7:4]<=9;//判断十位是否为零,并且给十位赋值 else qout[7:4]<=qout[7:4]-1;//由于个位赋9,相当于向十位借一,因而十位减一end else qout[3:0]<=qout[3:0]-1;//个位减一 /*这一部分是减计数模块,其思路是:首先判断个位是否为零,若为零,则执行后面的程序,个位直接赋9,并且十位减一;否则个位减一*/ 2'b01: if (qout[3:0]==9)//判断个位是否为9,否则跳到个位加一begin

按键消抖与时间按键

按键消抖与时间按键 这篇文章写给正在学51单片机的或者刚入门51单片机准备进阶的的朋友,我们来着重讨论一下按键消抖和时间按键这两项。 我们常用的按键大多都是机械的,机械开关就会出现机械振动,这个由物理学或者实验可以推出来,抖动会在单片机上面出现重复扫描次数,次数多少与单片机的时钟晶振有关,时钟晶振越高单片机执行速度越快,重复次数就越多 整个按键数百ms 按下瞬间,抖动时间大概10ms 弹起瞬间,抖动大概10ms 按键一次出现的电平变化 (上面的时间都是老师说的和书上现成的,没有实际测试,而且不同的按键应该也会有差异,作为学习研究确实不应该,找个时间锅锅会测出这个时间供大家参考,嘿嘿) 由图我们可以看出,按下去瞬间会出现抖动,弹起来也会出现抖动,明显是个阻尼振动,按键扫描程序是按顺序执行的; 首先提出三个问题大家思考一下 1.为什么要消除抖动 2.如何消抖 3.是不是按键都要消抖,不是的话,哪些需要消抖,哪些不需要消抖 4.消抖的时间是不是必须10ms 5.按键消抖的方式是不是一定像书上的那样,如何消抖更节省CPU,且更简单 按键如果不消除抖动,那么单片机检测到的低电平的次数就不止一次,那我们按键一次,单片机会检测到多次,比如我们把按某个按键设置按一次成某个变量加1,结果按一次就加了很多次,这样我们就不能精确的通过按键来调整我们想要的参数,所以我们消除抖动的目的就是要实现按一次按键让单片机读出一次按键操作 消抖分硬件和软件消抖, 硬件消抖有《模拟电子技术》上提到用三态门实现,当然还有周立功那个7920(管理数码管和按键的芯片),当然还有很多硬件电路以及一些按键有自带消抖电路,但是如果要做产

触摸延时开关设计

触摸延时开关设计 2014年5月21日

一、设计介绍 楼道触摸延时开关是一种简单、安全、新型的电子节能开关。可广范应用于多层住宅和办公楼室外的走廊、门厅、楼梯间、电梯间、过道等公共场所,也可以在家庭安装。本次设计利用模拟电路与数字电路,以直流稳压电源电路、NE555单稳态电路、和继电器控制电路为核心设计触摸延时开关。需要开灯时,手指触摸开关感应区,电灯自动点亮,延时约一分钟,电灯自动熄灭。设计表明这种开关制作简单,安全节能。 二、设计原理 设计电路如下:

三、单元电路设计及相关参数计算 1、照明灯电路: 照明电路采用100V交流输出,将功率为100W的灯泡之串联。 2、电源电路

电源电路如下: 电子系统的正常运行离不开稳定的电源,多数电路的直流电源是由电网的交流电转换来的。常用小功率直流稳压电源系统由电源变压器、整流电路、滤波电路、稳压电路四部分组成如上图所示整流电路。 本设计采用12V电压为电路供电,为得到12V直流电源,将220V频率为50Hz的交流电输入变压器(变比为11:1),经过整流桥整流得到直流电,通过电阻R1限流及稳压二极管将输出电压维持在12V,为其他电路提供稳定的工作电压。变压器副边输出电压脉冲系数大故应将直流电通过电容滤波。理想情况下交流分量可通过电容C3全部滤除,使输出电压仅为直流电压,一般取RC>(3- 5)T/2 其中T为电源交流电压的周期。要得到稳定的直流电滤波后通过电阻R4限流再经稳压二极管1N963,使输出电压稳定为12V。稳压二极管参数如下表所示

参数计算: 取变压器变比为11:1进行计算 变压器副边电压 U2=220/11=22V 交流电通入整流电路,经过全波整流的电压平均值 020.919.8U U V == 因稳压二极管最大工作电流为40mA,计算电阻4R : 04/40I U R mA =< 得4R >495Ω,取4R =550Ω 3、延时电路

实验2 分频电路和数字时钟

实验2 分频电路和数字时钟 一、基于Quartus II 软件,用D 触发器设计一个2分频电路,并做波形仿真,在此基础上,设计一个 4分频和8分频电路,做波形仿真。 实验工具:Quartus Ⅱ8.0 实验步骤: (1)工程设计步骤: (2)分频电路设计: 实验内容: (一)二分频电路 (1)原理图设计:如图 1-1 图1-1 二分频电路 (2)综合 综合报告:如图 1-2 图1-2 二分频综合报告 流动状态 软件版本 修复名称 顶层文件 器件系列 所有逻辑资源 所有寄存器 所有引脚 所有虚拟引脚 所有存储器 器件型号 时间模型

(3)功能仿真 二分频电路功能仿真波形图:如图1-3 图1-3 二分频功能仿真图 结论:时钟的一个周期为100ns,频率为1/100,输出的一个周期为200ns,频率为1/200。输出的频率为时钟的1/2。所以二分频电路的仿真结果是正确的。 (4)时序仿真 二分频电路时序仿真波形图:如图1-4 图1-4 二分频时序仿真图 结论:时序仿真时,输出的波形明显出现了延时。时钟的一个周期为100ns,频率为1/100,输出的一个周期为200ns,频率为1/200。输出的频率为时钟的1/2。虽然出现了延时,但二分频电路的仿真结果仍然是正确的。 最大工作频率:450MHZ 如图1-5 图1-5 最大工作频率 延时情况:tco时钟至输出的延时为5.736s 如图1-6 注:tsu(建立时间),th(保持时间),tco(时钟至输出延时),tpd(引脚至引脚延时) 图1-6 延时情况图 (5)封装

二分频电路的封装:如图 1-7 图 1-7 二分频电路封装 (二)四分频电路和八分频电路 (1)原理图设计:如图 2-1 图 2-1 四分频电路和八分频电路 (2)综合 综合报告:如图 2-2 图 2-2 综合报告 (3)功能仿真 四分频电路和八分频电路功能仿真波形图:如图 2-3 图2-3四分频电路和八分频电路功能仿真波形图 八分频输出 四分频输出 二分频输出 时钟输入

按键开关消抖程序

按键开关消抖程序 实践中,单片机端口在连接开关器件时都要考虑消抖的问题,或在硬件上 增加延迟,或是增加软件延迟查询的功能模块。这里,我们考虑这样一个检测 电路:单片机连接一个开关和两个LED。程序是这样的,如果开关的消抖正确, 就点亮LED1,否则就闪亮LED2。按下开关,点亮LED1,释放开关,LED1 即熄灭。我们加入20 毫秒的消抖延迟时间。当检测到开关为低电平时,单片 机在延迟20 毫秒后再次检测开关的状态。如果此时开关状态为高,则LED2 就闪亮,如为低则点亮LED1。源代码: led1bitP2.0led2bitP2.1switch1bitP1.0ORG 0000hsetb switch1//initialize switch 1 as inputsetb led1//Turn OFF LED1setb led2//Turn OFF LED2 wait:jb switch1,wait// Wait till switch1 has been pressedcall debounce_delayjb switch1,c1_wait//switch low even after debouncing period//switch has been succesfully debouncedclr led1//Turn ON LED1jnb switch1,$//wait till switch has been releasedsetb led1//Turn OFF LED1ajmp wait c1_wait://Switch PIN high after debounce period so error in debouncingcpl led2ajmp wait debounce_delay://Subroutine for generating 20ms delaymov r7,#245l1_debounce_delay:mov r6,#40djnz r6,$djnz r7,l1_debounce_delayret END tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

数字钟设计报告——数字电路实验报告

数字钟设计实验报告 专业:通信工程 姓名:王婧 班级:111041B 学号:111041226

数字钟的设计 目录 一、前言 (3) 二、设计目的 (3) 三、设计任务 (3) 四、设计方案 (3) 五、数字钟电路设计原理 (4) (一)设计步骤 (4) (二)数字钟的构成 (4) (三)数字钟的工作原理 (5) 六、总结 (9) 1

一、前言 此次实验是第一次做EDA实验,在学习使用软硬件的过程中,自然遇到很多不懂的问题,在老师的指导和同学们的相互帮助下,我终于解决了实验过程遇到的很多难题,成功的完成了实验,实验结果和预期的结果也是一致的,在这次实验中,我学会了如何使用Quartus II软件,如何分层设计点路,如何对实验程序进行编译和仿真和对程序进行硬件测试。明白了一定要学会看开发板资料以清楚如何给程序的输入输出信号配置管脚。这次实验为我今后对 EDA的进一步学习奠定了更好的理论基础和应用基础。 通过本次实验对数电知识有了更深入的了解,将其运用到了实际中来,明白了学习电子技术基础的意义,也达到了其培养的目的。也明白了一个道理:成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。 2

二、设计目的 1.掌握数字钟的设计方法。 2熟悉集成电路的使用方法。 3通过实训学会数字系统的设计方法; 4通过实训学习元器件的选择及集成电路手册查询方法; 5通过实训掌握电子电路调试及故障排除方法; 6熟悉数字实验箱的使用方法。 三、设计任务 设计一个可以显示星期、时、分、秒的数字钟。 要求: 1、24小时为一个计数周期; 2、具有整点报时功能; 3、定时闹铃(未完成) 四、设计方案 一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。干电路系统由秒信号发生 3

FPGA课程设计报告

F P G A 课 程 设 计 报 告 学部:信息科学与技术学部 专业:通信工程 班级:10级1班 学号:100103011125 姓名:万洁 指导老师:祝宏 合作伙伴:张紫君 2012.12.13

一.《任务书》: 实验一100进制的可逆计数器(11——12周)实验二交通灯控制系统(15周) 实验三多功能数字钟系统(14-15周)二.实验书写格式: 一:题目要求 二:程序代码 三:操作步骤及运行结果截图 四:心得体会 三.实验附录: 一:老师提供的资源 二:关于实验所用EP4CE115F29板的简介

实验一100进制的可逆计数器 一、设计一个可控的100进制可逆计数器,要求用实验箱下载。 (1)计数器的时钟输入信号周期为200ns。 (2)以十进制形式显示。 (3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。 clr plus minus 功能 0 ××复位为0 1 1 0 递增计数 1 0 1 递减计数 1 1 1 暂停计数 二、程序如下: module keni100(CLR,CLK,PLUS,MINUS,OUT); //100进制的可逆计数器 input CLR,PLUS,MINUS,CLK; output [7:0]OUT; reg [7:0]OUT; always@(posedge CLK) begin if(!CLR) //如果CLR为零,输出为零;反之,运行else程序 OUT[7:0]<=0; else

begin if(PLUS==0 && MINUS==1) //100进制的递减计数 begin if (OUT[3:0]==0) begin OUT[3:0]<=9; if (OUT[7:4]==0) OUT[7:4]<=9; else OUT[7:4]<=OUT[7:4]-1; end else OUT[3:0]<=OUT[3:0]-1; end if(PLUS==1 && MINUS==0) //100进制的递增计数 begin if (OUT[3:0]==9) begin OUT[3:0]<=0; if (OUT[7:4]==9) OUT[7:4]<=0; else OUT[7:4]<=OUT[7:4]+1; end else OUT[3:0]<=OUT[3:0]+1; end if(PLUS==1 && MINUS==1) OUT<=OUT; //若PLUS和MINUS都为1,暂停计数 if(PLUS==0 && MINUS==0) OUT<=0; //若都为零,输出为零end end endmodule 三、运行程序 1、在quarters II9.1输入程序 打开quarters II界面,点击file→New,在出现的对话框,如图1.1所示,选择Text File,点击OK.

按键消抖

一、按键消抖 1.1 计数器型消抖电路(一) 计数器型消抖电路(一)是设置一个模值为(N+1)的控制计数器,clk在上升沿时,如果按键开关key_in='1',计数器加1,key_in='0' 时,计数器清零。当计数器值为2时,key_out 输出才为1,其他值为0时。计数器值为N时处于保持状态。因此按键key_in持续时间大于N个clk时钟周期时,计数器输出一个单脉冲,否则没有脉冲输出。如果按键开关抖动产生的毛刺宽度小于N个时钟周期,因而毛刺作用不可能使计数器有输出,防抖动目的得以实现。clk的时钟周期与N的值可以根据按键抖动时间由设计者自行设定。 主要程序结构如下: 图1是N为3的波形仿真图,当按键持续时间大于3个时钟周期,计数器输出一个单脉冲,其宽度为1个时钟周期,小于3个时钟周期的窄脉冲用作模拟抖动干扰,从图1可以看出,抖动不能干扰正常的单脉冲输出。 1 按键抖动产生原因分析 绝大多数按键都是机械式开关结构,由于机械式开关的核心部件为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象。虽然只是进行了一次按键,结果在按键信号稳定的前后出现了多个脉冲,如图1所示。如果将这样的信号直接送给微处理器扫描采集的话,将可能把按键稳定前后出现的脉冲信号当作按键信号,这就出现人为的一次按键但微处理器以为多次按键现象。为了确保按键识别的准确

性,在按键信号抖动的情况下不能进入状态输入,为此就必须对按键进行消抖处理,消除抖动时不稳定、随机的电压信号。机械式按键的抖动次数、抖动时间、抖动波形都是随机的。不同类型的按键其最长抖动时间也有差别,抖动时间的长短和按键的机械特性有关,一般为5~10 ms,但是,有些按键的抖动时间可达到20 ms,甚至更长。所以,在具体设计中要具体分析,根据实际情况来调整设计。 2 按键消抖电路的设计 按键消抖一般采用硬件和软件消抖两种方法。硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。在微机系统中一般都采用软件延时的消抖方法。在用可编程逻辑器件FPGA/CPLD设计数字系统中,也可以用VHDL语言设计相应的时序和逻辑电路,对按键信号进行处理,同样可以达到消抖目的。本文利用Altera公司的可编程逻辑器件CPLD和QuartusⅡ,设计性能可靠的按键消抖电路。 2.1 按键消抖电路设计原理 按键消抖的关键是提取稳定的低电平(或高电平)状态,滤除按键稳定前后的抖动脉冲。在用基于VHDL 语言的时序逻辑电路设计按键消抖电路时,可以用一个时钟脉冲信号对按键状态进行取样,当第一次采样到低电平时,启动延时电路,延时结束后,再对按键信号进行连续三次取样,如果三次取样都为低电平,则可以认为按键已经处在稳定状态,这时输出一个低电平的按键确认信号,如果连续三次的取样中,至少有一次是高电平,则认为按键仍处在抖动状态,此时不进行按键确认,按键输出信号为高电平。 2.2 按键消抖电路设计 该控制电路采用VHDL语言的有限状态机的设计方法来描述和实现,其状态转换图如图2所示。

电工电子实验报告

电工电子实验报告 电工电子综合实验(U)实 验报告 —多功能数 字计时器

摘要 设计搭建一个多功能数字计数器,从0分0秒开始计时, 计到9分59秒后自动清零。具有计时、清零、校分、整点报时的基本功能和闹钟、秒表的附加功能。显示电路使用的是动态显示方式,即只使用一片译码器外加较高频率的时钟控制电路来实现数码管的“同时”显示功能 Abstract Desig n a multi-purpose digital register which can display the time . It starts from 0 mi nute 0 sec on ds, counts after 9 minute 59 sec onds automatic clear zero. The clock has the basic functions of clearing, minute-correcting, beeping in the sharp hour and the stopwatch. We use dyn amic display circuit to display, n amely realiz ing display ing in the same time using one en coder and a high freque ncy.

目录设计目的 二. 设计要求 三. 实验原理 四. 单元电路设计及其电路图 1信号发生电路 2、计时电路 3、显示电路 4、清零电路 5、校分电路 6、报时电路 五. 附加电路 六. 实验感想 七. 实验中遇到的问题 八. 附录 1、工具及器件清单 2、各元件的引脚图及功能表 3、总电路逻辑图 4、参考文献

按键消抖实验

基于verilog按键消抖设计 Aaron malone 关于键盘的基础知识,我就以下面的一点资料带过,因为这个实在是再基础不过的东西了。然后我引两篇我自己的博文,都是关于按键消抖的,代码也正是同目录下project里的。这两篇博文都是ednchina的博客精华,并且在其blog 首页置顶多日,我想对大家会很有帮助的。 键盘的分类 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘。 在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。 按键在闭合和断开时,触点会存在抖动现象:

从上面的图形我们知道,在按键按下或者是释放的时候都会出现一个不稳定的抖动时间的,那么如果不处理好这个抖动时间,我们就无法处理好按键编码,所以如何才能有效的消除按键抖动呢?让下面的两篇博文日志给你答案吧。 经典的verilog键盘扫描程序 从最基础的分频程序开始,但看到这个键盘扫描程序后,直呼经典,有相见恨晚的感觉,还想说一句:威百仕( VibesIC ),我很看好你!WHY?待我慢慢道来,这个程序的综合后是0error,0warning。想想自己编码的时候那个warning是满天飞,现在才明白HDL设计有那么讲究了,代码所设计的不仅仅是简单的逻辑以及时序的关系,更重要的是你要在代码中不仅要表现出每一个寄存器,甚至每一个走线。想想我写过的代码,只注意到了前者,从没有注意过后者,还洋洋自得以为自己也算是个高手了,现在想来,实在惭愧啊!学习学习在学习,这也重新激发了我对HDL设计的激情,威百仕给了我一个方向,那我可要开始努力喽! 废话说了一大堆,看程序吧:(本代码经过ise7.1i综合并下载到SP306板上验证通过)

楼道触摸延时开关设计

西北工业大学明德学院 课程设计 课程电子线路课程设计 题目楼道触摸式延时照明灯 院系 班级 组员 指导教师 2010年3 月12 日

目录 一、设计要求 (2) 二、设计目的 (2) 1.熟悉晶闸管的开关作用 (2) 2.掌握桥式整流电路原理 (6) 3.掌握三极管的开关作用 (8) 4.掌握稳压管的作用 (9) 三、设计的具体实现 (10) 1.系统概述 (10) 2.单元电路设计 (11) 3.仿真测试 (13) 四、结论与展望 (16) 五、心得体会及建议 (16) 六、附录 (17) 七、参考文献 (18)

楼道触摸延时开关设计报告 一、设计要求 1.设计一楼道触摸延时开关,其功能是当人用手触摸开关时,照明灯点亮,并延续一段时间后自动熄灭。 2.开关的延时时间约1分钟左右。 二、设计目的 1.熟悉晶闸管的开关作用 (1).晶闸管的开关作用 晶闸管是一种开关组件,广泛的应用在各种电路,以及电子设备中。典型的小电流控制大电流的组件,通过一个电流很小的脉冲触发,当晶闸管处于导通状态时它的电阻变得很小相当于一跟导线。 (2).晶闸管的结构和工作原理 晶闸管是四层三端器件,它有J 1、J 2 、J 3 三个PN结,可以把它 中间的NP分成两部分,构成一个PNP型三极管和一个NPN型三极管的复合管。如图图2-1.1所示: 图2-1.1等效图

图2-1.2 器件符号 当晶闸管承受正向阳极电压时,为使晶闸管导通,必须使承受反向电压的PN 结J 2失去阻挡作用。每个晶体管的集电极电流同时就是另一个晶体管的基极电流。因此是两个互相复合的晶体管电路,当有足够的门极电流Ig 流入时,就会形成强烈的正反馈,造成两晶体管饱和导通。 设PNP 管和NPN 管的集电极电流分别为I C1和I C2,发射极电流相应为Ia 和I k ,电流放大系数相应为α1=I C1/Ia 和α2=I C2/I k ,设流过J 2结的反相漏电流为I CO ,晶闸管的阳极电流等于两管的集电极电流和漏电流的总和: CO k CO C C +I I Ia+α =α+I +I =I I 2121а (1) 若门极电流为Ig ,则晶闸管阴极电流为: g a k I I I += 得出晶闸管阳极电流为: ) (121ααа+-+=g co I I I (2) 硅PNP 管和硅NPN 管相应的电流放大系数α1和α2随其发射

电路设计实验报告

电子技术课程设计 题目: 班级: 姓名: 合作者:

数字电子钟计时系统 一、设计要求 用中、小规模集成电路设计一台能显示时、分、秒的数字电子钟,基本要求如下: 1、采用LED显示累计时间“时”、“分”、“秒”。 2、具有校时功能。 二、设计方案 数字电子钟主要由振荡器、分频器、计数器、译码器、显示器等几部分组成,其整体框图为 其中,秒信号发生器为:

由石英晶体发出32768Hz的振荡信号经过分频器,即CD4060——14级串行二进制计数器/分频器和振荡器,输出2Hz 的振荡信号传入D触发器,经过2分频变为秒信号输出。 校时电路为: 当K1开启时,与非门一端为秒信号另一端为高电位,输出即为秒信号秒计数器正常工作,当K1闭合,秒信号输出总为0,实现秒暂停。 当K2/K3开启时,分信号/时信号输入由秒计数器输出信号及高电平决定,所以输出信号即为分信号/时信号,当K2/K3闭合时,秒信号决定分信号/时信号输出,分信号/时信号输出与秒信号频率一致, 以实现分信号/时信号的加速校时。 秒、分计数器——60进制

首先,调节CD4029的使能端,使其为十进制加法计数器。将输入信号脉冲输入第一个 计数器(个位计数器)计十个数之后将,进位输出输给下一个计数器(十位计数器)的进位 输入实现十秒计数。当计数器的Q1,Q2输出均为1时经过与门电路,输出高电平,作为分 脉冲或时脉冲并同时使两计数器置零。 时计数器——24进制 时脉冲 首先,调节CD4029的使能端,使其为十进制加法计数器。将输入信号脉冲输入第一个 计数器(个位计数器)计十个数之后将,进位输出输给下一个计数器(十位计数器)的进位 输入实现十秒计数。当十位计数器Q1和个位计数器Q2输出均为1时经过与门电路,输出 高电平使两计数器置零。 译码显示电路

使用硬件方式对按键进行消抖处理

按键电路:常用的非编码键盘,每个键都是一个常开开关电路。 按键消抖: 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。 按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖

动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。按键的抖动,可用硬件或软件两种方法。 <1> 硬件消抖:在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。 图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B 点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。 <2> 软件消抖:如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。按键消抖

《声光双控延时开关电路制作》

图1 声光双控延时开关电路制作实验报告 一、目的 进一步加深理解典型光电传感器的工作原理及其应用。学习光敏电阻传感器的应用及其与其它传感器(如声敏传感器——驻极体话筒)是如何配合使用来实现一个更为复杂的控制过程。并让学生学会如何将已学习的关于光电传感器应用到实际的应用领域。初步领会如何根据已给定的条件,根据需要设置电路中相关元器件的参数;如何根据故障现象,依据已学习的理论及专业基础知识和电路原理图进行故障的排除;提高动手能力及实际操作技能。 二、任务和要求 ㈠任务 1.按工厂模式进行元器件的检测和验收。 2.掌握该电路的工作原理。要求具体到每个元器件的作用;能对该电路进行功能模块的划分并画出电路原理框图。 3.按工艺要求进行焊接和组装。 4.对电路进行调试、检测、以及故障排除,最终实现其功能。 5.按要求撰写实训报告。 ㈡要求 如电路图所示。 1.白天 光敏管DG 在光线的照射下,反向电阻变小,IC1D 反相器(11)脚输出高电平,经D1,(1)脚为高电平,IC1A 与非门(3)脚输出低电平,单向可控硅SCR 截止,灯泡LAMP 保持不亮。 2.夜间 光敏管DG 反向电阻变大,IC1D 反相器(11)脚输出低电平,这时D1起到了隔离的作用。 当话筒MIC 接收到脚步等声音时,经C2到IC1C 放大,输出的脉冲信号经C4使(1)脚得到低电平,IC1A 与非门(3)脚输出高电平,单向可控硅SCR 导通,灯泡LAMP 点亮;同时C5开始充电使IC1B 反相器 (4)脚输出低电平,IC1A 与非门(3)脚保持输出高电平,单向可控硅SCR 保持导通,灯泡LAMP 保持点亮。 当C5充电完毕,IC1B 反相器输出变为高电平,IC1A 与非门(3)脚输出低电平,单向可控硅SCR 截止,灯泡LAMP 熄灭。 当话筒MIC 再次接收到脚步等声音时,灯泡点亮延时熄灭(54秒左右),依此循环。 C5充电时间(即灯泡延时时间)由C5、R3的数值决定。R5增大可使声音灵敏度降低。 三、电路图及其工作原理 光敏电阻器是利用半导体光电效应制成的一种特殊电阻 器,对光线十分敏感,它的电阻值能随着外界光照强弱变化而 变化。在无光照射时,它呈高阻状态;当有光照射时,其电阻 值迅速减小。 常见的光敏电阻的外形如图31中的分立器件所示,光敏 电阻器通常由光敏层、玻璃基片(或树脂防潮膜)和电极等组 成。光敏电阻广泛应用于各种自动控制电路(如自动照明灯控 制电路、自动报警电路等)、家用电器(如电视机中的亮度自动调节,照相机中的自动曝光控制等)及各种测量仪器中。 声光控延时开关的电路原理图见图1所示。电路中的主要元器件是使用了数字集成电路cd4011,其内部含有4个独立的与非门vd1~vd4,使电路结构简单,工作可靠性高。 顾名思义,声光控延时开关就是用声音来控制开关的“开启",若干分钟后延时开关“自动关闭"。因此,整个电路的功能就是将声音信号处理后,变为电子开关的开动作。明确了电路的信号流程方向后,即可依据主要元器件将电路划分为若干个单元,由此可画出图2所示的方框图。 结合图2来分析图1。声音信号(脚步声、掌声等)由驻极体话筒b1接收并转换成电信号,经c1耦合到Q1的基极进行电压放大,放大的信号送到与非门(U1A)的1脚,R2、R6是Q1偏置电阻,c2是电源滤波电容。 为了使声光控开关在白天开关断开,即灯不亮,由光敏电阻RL1等元件组成光控电路,R7和RL1组成

EDA 实验2简单分频时序逻辑电路设计 实验报告

时序电路设计 实验目的: 1.掌握条件语句在简单时序模块设计中的使用。 2.学习在Verilog模块中应用计数器。 实验环境: Windows 7、MAX+PlusⅡ10等。 实验内容: 1.模为60的8421BCD码加法计数器的文本设计及仿真。 2.BCD码—七段数码管显示译码器的文本设计及仿真。 3.用For语句设计和仿真七人投票表决器。 4.1/20分频器的文本设计及仿真。 实验过程: 一、模为60的8421BCD码加法计数器的文本设计及仿真: (1)新建文本:选择菜单File下的New,出现如图5.1所示的对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。 图5.1 新建文本 (2)另存为V erilog编辑文件,命名为“count60.v”如图5.2所示。 (3)在编辑窗口中输入程序,如图5.3所示。

图5.2 另存为.V编辑文件图5.4 设置当前仿真的文本设计 图5.3 模为60的8421BCD码加法计数器的设计代码

(4)设置当前文本:在MAX+PLUS II中,在编译一个项目前,必须确定一个设计文件作为当前项目。按下列步骤确定项目名:在File菜单中选择Project 中的Name选项,将出现Project Name 对话框:在Files 框内,选择当前的设计文件。选择“OK”。如图5.4所示。 (5)打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现如图5.5的编译器窗口。 图5.5 编译器窗口 选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。 (6)建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“Waveform Editor File”,单击OK后将出现波形编辑器子窗口。 (7)仿真节点插入:选择菜单Node下的Enter Nodes from SNF选项,出现如图5.6所示的选择信号结点对话框。按右上侧的“List”按钮,在左边的列表框选择需要的信号结点,然后按中间的“=>”按钮,单击“OK”,选中的信号将出现在波形编辑器中。 图5.6 仿真节点插入

FPGA课程设计题目

1、彩灯控制器设计 内容及要求: 设计一个彩灯控制器,具体设计要求如下: (1)要有多种花型变化(至少设计5种),led至少16路 (2)多种花型可以自动变化 (3)彩灯变换的快慢节拍可以选择 (4)具有清零开关 (5)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 2、数字秒表设计 内容及要求: 设计一用于体育比赛的数字秒表,具体设计要求如下: (1)6位数码管显示,其中两位显示min,四位显示see,显示分辨率为0.01 s。 (2)秒表的最大计时值为59min59.99see。 (3)设置秒表的复位/启动键,按一下该键启动计时,再按即清0。依此循环。 (4)设置秒表的暂行/继续键。启动后按一下暂行,再按继续。依此循环。 (5)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 3、交通信号控制系统设计 内容及要求: 设计一个十字路口交通控制系统,具体设计要求如下: (1)东西(用A表示)、南北(用B表示)方向均有绿灯、黄灯、红灯指示,其持续时间分别是40秒、5秒和45秒, 交通灯运行的切换示意图和时序图分别如图1、图2所示。 (2)系统设有时钟,以倒计时方式显示每一路允许通行的时间。 (3)当东西或南北两路中任一路出现特殊情况时,系统可由交警手动控制立即进入特殊运行状态,即红灯全亮,时钟停止计时,东西、南北两路所有车辆停止通行;当特殊运行状态结束后,系统恢复工作,继续正常运行。 图1 交通灯运行切换示意图

B红 CP A绿 A黄 A红 B黄 B绿 5S 5S 图2 交通灯时序图 (4)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 4、简易密码锁设计 内容及要求 设计一个4位串行数字锁。 (1)开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮一个指示灯。否则进入“错误”状态,并发出报警信号。 (2)锁内的密码可调,且预置方便,保密性好。 (3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。此时,数字锁又自动等待下一个开锁状态。 (4)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 5、出租车计价器设计 内容及要求 (1)设一个出租车自动计费器,计费包括起步价、行驶计费和等待计费三个部分,用4个数码管显示出金额数目,最大值为999.9元,最小计价单位为0.1元。行驶里程在3公里范围内且等待时间未超过三分钟时按起步价8元计费;行驶里程超过三公里后按每公里2元收费;等待时间超过三分钟后按每分钟1元收费。等待时间用两个数码管显示,最大值为59分钟。 总费用=起步价+(里程-3km )*里程单价+(等待时间-3)*等候单价 (2)能够实现的功能: 显示汽车行驶里程:用四位数字显示,单位为km 。 计程范围为0~99km ,计程分辨率为1km 。 显示等候时间:用两位数字显示分钟,单位为min 。计时范围为0~59min ,计时分辨率为1min 。

相关主题
文本预览
相关文档 最新文档