当前位置:文档之家› 北邮数字电路综合实验 打地鼠

北邮数字电路综合实验 打地鼠

北邮数字电路综合实验 打地鼠
北邮数字电路综合实验 打地鼠

数字电路与逻辑设计实验报告打地鼠游戏的设计与实现

学院:信息与通信工程学院

班级:2013211117

姓名:李昊然

学号:2013210486

序号:02

课题:打地鼠

一.课题的任务要求

基本要求:

1、设计一个挑战反应速度的“打地鼠”游戏,采用用8×8 双色点阵显示游戏界面,其中游戏边界采用绿色LED 显示,随机出现的地鼠采用红色LED 显示,游戏有16 个

洞穴,如图1 所示。

图1 打地鼠游戏示意图

2、游戏洞穴每次随机出现一个地鼠,每个地鼠的最长保持时间为2 秒,2 秒后随机出现下一个地鼠。以4×4 键盘的按键代表锤子,16 个洞穴与16 个按键一一对应,一

旦锤子在2 秒内击中地鼠,地鼠消失,数码管计分器分数加1 分;若锤子一直没有

击中地鼠,2 秒后该地鼠消失。用两个数码管显示游戏成绩,当游戏成绩达到10 分

时游戏结束,点阵显示字符“V”。

3、用两个数码管对整个游戏进行倒计时,当游戏时间超过59 秒而成绩未达到10 分时,游戏失败,点阵显示字符“X”。

4、按复位键重新开始游戏,并开始倒计时。

提高要求:

1、增加游戏难关,在边界内每次随机出现两个地鼠,两个地鼠的最长保持时间均为2 秒,2 秒后随机出现下两个地鼠,锤子击中一个地鼠加1 分,当游戏成绩达到20 分

而且游戏时间未超过59 秒时,游戏结束,显示字符“V”,否则显示字符“X”。

2、自拟其他功能。

二.系统设计

(一)设计思路

程序采用自顶向下设计的思路,先将主程序启动,然后依次进行多级分频,并逐个执行子程序,主程序为点阵中显示边框背景及随机出现地鼠,子程序包括数码管计分和计时部分、时钟部分、键盘部分以及逻辑判断部分等。

(二)总体框图

(三)分块设计

1.输入部分:外部时钟信号CLK频率为25MHz,为程序提供初始的有效时钟边沿。复位信号输入CLEAR为高电平有效,当CLEAR为1时,数码管、点阵、计数器等都返回到初始状态。键盘输入值由两个四位二进制数分别表示行和列的状态。

2.逻辑判断模块:通过检测键盘返回值是否与点阵上出现地鼠的位置相对应,判断“打”是否有效。通过60s倒计时的计数器是否为0判断游戏是否到时。通过一个模为10的计数器判断得分是否达到游戏要求。

3.输出部分:由译码电路,根据SEG_SELECT信号的扫描、对SEG_SHOW赋予不同的值,实现在四个数码管上分别显示两位60s倒计时和两位计分。点阵根据LED_ROW的扫描、和LED_COL_G、LED_COL_R的值显示游戏的边框、地鼠出现的位置以及结束画面,利用人眼的视觉延缓效应,当行扫描时钟信号clk的频率>50Hz,可以达到六行点阵同时显示的效果。

4.键盘输入部分:以1k Hz的频率进行列扫描,将键盘检测到的行和列的二进制数KEY_COL 和KEY_ROW组合起来,赋值给一个四位二进制数CODE,记录按键的位置,方便与地鼠在点阵上的位置相比较。

三.仿真波形及波形分析

1.分频

由波形可知,对输入时钟信号clk进行了4倍分频

2.绿色灯示边框

在行数为1和6时,每列都亮,在行数为2、3、4、5时,亮第1和第6列,从而形成一个6*6的边框。

3.随机出现地鼠

地鼠可能出现在随机的行和列

当lose信号为1时,点阵显示×

4.

数码管会在第一个到第四个之间来回扫描

5.

给键盘行值赋予一个随机值,程序进行列扫描,当键盘输入值与点阵值相对应时,积分信号score会+1,由于是随机赋值,所以恰好碰上的概率较小,加分的时间较长

四.源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY dds IS

PORT(

CLK:IN STD_LOGIC; --输入时钟

LED_ROW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --点阵行

LED_COL_G:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --点阵列绿色

LED_COL_R:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --点阵列红色

SEG_SELECT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);--数码管位置扫描

SEG_SHOW:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --数码管显示

KEY_COL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --键盘列

KEY_ROW:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --键盘行

CLEAR:IN STD_LOGIC; --复位信号

LIGHT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --输出灯

);

END dds;

ARCHITECTURE a OF dds IS

SIGNAL TEMP_LED_ROW: STD_LOGIC_VECTOR(7 DOWNTO 0); --DIAN ZHEN SIGNAL TEMP_LED_COLG: STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL TEMP_LED_COLR: STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL TEMP_SEG_SELECT: STD_LOGIC_VECTOR(5 DOWNTO 0):="011111"; --SHU MA GUAN SIGNAL TEMP_SEG1: STD_LOGIC_VECTOR(6 DOWNTO 0);

SIGNAL TEMP_SEG2: STD_LOGIC_VECTOR(6 DOWNTO 0);

SIGNAL TEMP_SEG3: STD_LOGIC_VECTOR(6 DOWNTO 0);

SIGNAL TEMP_SEG4: STD_LOGIC_VECTOR(6 DOWNTO 0);

SIGNAL RANDOM: STD_LOGIC_VECTOR(3 DOWNTO 0); --SUIJISHU SIGNAL TEMP_RANDOM: STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL DIV_1K: INTEGER RANGE 0 TO 12499; --FEN PIN 0.001S SIGNAL DIV_1S: INTEGER RANGE 0 TO 499; --FEN PIN 1S

SIGNAL DIV_2S: INTEGER RANGE 0 TO 999; --FEN PIN 2S

SIGNAL DIV_R: INTEGER RANGE 0 TO 998; --FEN PIN SUI JI

SIGNAL TEMP_10: INTEGER RANGE 0 TO 9; --DAO JI SHI SHI WEI

SIGNAL CLK_1K: STD_LOGIC; --SHI ZHONG

SIGNAL CLK_1S: STD_LOGIC;

SIGNAL CLK_2S: STD_LOGIC;

SIGNAL CLK_R: STD_LOGIC;

--SIGNAL CLKTEMP: STD_LOGIC;

SIGNAL TEMP_KEY_COL:STD_LOGIC_VECTOR(3 DOWNTO 0); --JIAN PAN

SIGNAL TEMP_KEY_ROW:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL CODE: STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL TEMP_LIGHT:STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL POKE:INTEGER RANGE 0 TO 1; --DA DI SHU

SIGNAL POKE_FLAG:INTEGER RANGE 0 TO 1:=0; --DA BIAO ZHI WEI

SIGNAL SCORE :INTEGER RANGE 0 TO 10; --DE FEN SIGNAL SCORE_FLAG: INTEGER RANGE 0 TO 1; --DE FEN BIAO ZHI WEI

SIGNAL COUNTDOWN_60:INTEGER RANGE 0 TO 60; --60S DAO JI SHI

SIGNAL WIN :INTEGER RANGE 0 TO 1; --YING

SIGNAL LOSE :INTEGER RANGE 0 TO 1; --SHU

SIGNAL CLEAR_TEMP: STD_LOGIC; --FU WEI

BEGIN

P1:PROCESS (CLK) --DIV 0.001 S

BEGIN

IF CLK'EVENT AND CLK = '1' THEN

IF DIV_1K =12499 THEN --计数12500次

DIV_1K <= 0; CLK_1K <= NOT CLK_1K;--clk_1k翻转两次

ELSE

DIV_1K <= DIV_1K + 1;

END IF;

END IF;

END PROCESS P1;

P2:PROCESS (CLK_1K) --DIV 1 s

BEGIN

IF CLK_1K'EVENT AND CLK_1K = '1' THEN

IF DIV_1S =499 THEN

DIV_1S <= 0; CLK_1S <= NOT CLK_1S;

ELSE

DIV_1S <= DIV_1S + 1;

END IF;

END IF;

END PROCESS P2;

P3:PROCESS (CLK_1K) --DIV 2 S

BEGIN

IF CLK_1K'EVENT AND CLK_1K = '1' THEN

IF DIV_2S =999 THEN

DIV_2S <= 0; CLK_2S <= NOT CLK_2S;

ELSE

DIV_2S <= DIV_2S + 1;

END IF; --比较键盘输入值和地鼠位置是否相同,判断有没有打到

IF ( (CODE = "0000" AND TEMP_RANDOM = "1100")

OR (CODE = "0001" AND TEMP_RANDOM = "0000")

OR (CODE = "0010" AND TEMP_RANDOM = "0100")

OR (CODE = "0011" AND TEMP_RANDOM = "1000")

OR (CODE = "0100" AND TEMP_RANDOM = "1101")

OR (CODE = "0101" AND TEMP_RANDOM = "0001")

OR (CODE = "0110" AND TEMP_RANDOM = "0101")

OR (CODE = "0111" AND TEMP_RANDOM = "1001")

OR (CODE = "1000" AND TEMP_RANDOM = "1110")

OR (CODE = "1001" AND TEMP_RANDOM = "0010")

OR (CODE = "1010" AND TEMP_RANDOM = "0110")

OR (CODE = "1011" AND TEMP_RANDOM = "1010")

OR (CODE = "1100" AND TEMP_RANDOM = "1111")

OR (CODE = "1101" AND TEMP_RANDOM = "0011")

OR (CODE = "1110" AND TEMP_RANDOM = "0111")

OR (CODE = "1111" AND TEMP_RANDOM = "1011")

)

THEN POKE<=1;

ELSE POKE<=0;SCORE_FLAG<=0; --标志位,防止按一次计分多次

END IF;

IF (POKE = 1 AND SCORE_FLAG=0 AND POKE_FLAG=1) THEN—若打到则计一分

CLK_2S <= NOT CLK_2S;

--DIV_2S <= 0;

SCORE_FLAG<=1; --计分后标志位变1 SCORE <=SCORE +1;

END IF;

IF CLEAR_TEMP='1' THEN --若复位信号为高电平,恢复初始值

SCORE <= 0;

END IF ;

END IF;

END PROCESS P3;

P4:PROCESS (CLK) --random time --通过与2s时钟不同频率的时钟产生随机数 BEGIN

IF CLK'EVENT AND CLK = '1' THEN

IF DIV_R = 233 THEN

DIV_R <= 0; CLK_R <= NOT CLK_R;

ELSE

DIV_R <= DIV_R + 1;

END IF;

END IF;

END PROCESS P4;

P5:PROCESS (CLK_R) --random number --产生代表地鼠位置的随机数

BEGIN

IF(CLK_R'EVENT AND CLK_R = '1') THEN

CASE RANDOM IS

WHEN "0000" => RANDOM <= "0001";

WHEN "0001" => RANDOM <= "0010";

WHEN "0010" => RANDOM <= "0011";

WHEN "0011" => RANDOM <= "0100";

WHEN "0100" => RANDOM <= "0101";

WHEN "0101" => RANDOM <= "0110";

WHEN "0110" => RANDOM <= "0111";

WHEN "0111" => RANDOM <= "1000";

WHEN "1000" => RANDOM <= "1001";

WHEN "1001" => RANDOM <= "1010";

WHEN "1010" => RANDOM <= "1011";

WHEN "1011" => RANDOM <= "1100";

WHEN "1100" => RANDOM <= "1101";

WHEN "1101" => RANDOM <= "1110";

WHEN "1110" => RANDOM <= "1111";

WHEN OTHERS => RANDOM <= "0000";

END CASE;

END IF;

END PROCESS P5;

P6:PROCESS (CLK_2S) --把中间变量赋值给地鼠

BEGIN

IF(CLK_2S'EVENT AND CLK_2S = '1') THEN

TEMP_RANDOM <= RANDOM;

END IF;

END PROCESS P6;

P7:PROCESS(TEMP_RANDOM,CLK_1K) -- SUI JI CHU XIAN DI SHU BEGIN --按照随机数随机生成地鼠

IF CLEAR_TEMP ='1' THEN --若复位信号为高电平就不亮灯

TEMP_LED_COLR <= "00000000";

ELSIF (WIN = 0 AND LOSE =0)THEN

IF (CLK_1K'EVENT AND CLK_1K = '1')THEN

CASE TEMP_RANDOM IS --根据行数不同给列信号赋不同值

WHEN "0000" => IF TEMP_LED_ROW = "10111111" THEN TEMP_LED_COLR<= "01000000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "0001" => IF TEMP_LED_ROW = "10111111" THEN TEMP_LED_COLR<= "00100000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "0010" => IF TEMP_LED_ROW = "10111111" THEN TEMP_LED_COLR<= "00010000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "0011" => IF TEMP_LED_ROW = "10111111" THEN TEMP_LED_COLR<= "00001000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "0100" => IF TEMP_LED_ROW = "11011111" THEN TEMP_LED_COLR<= "01000000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "0101" => IF TEMP_LED_ROW = "11011111" THEN TEMP_LED_COLR<= "00100000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "0110" => IF TEMP_LED_ROW = "11011111" THEN TEMP_LED_COLR<= "00010000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "0111" => IF TEMP_LED_ROW = "11011111" THEN TEMP_LED_COLR<= "00001000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1000" => IF TEMP_LED_ROW = "11101111" THEN TEMP_LED_COLR<= "01000000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1001" => IF TEMP_LED_ROW = "11101111" THEN TEMP_LED_COLR<= "00100000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1010" => IF TEMP_LED_ROW = "11101111" THEN TEMP_LED_COLR<= "00010000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1011" => IF TEMP_LED_ROW = "11101111" THEN TEMP_LED_COLR<= "00001000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1100" => IF TEMP_LED_ROW = "01111111" THEN TEMP_LED_COLR<= "01000000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1101" => IF TEMP_LED_ROW = "01111111" THEN TEMP_LED_COLR<= "00100000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1110" => IF TEMP_LED_ROW = "01111111" THEN TEMP_LED_COLR<= "00010000";ELSE TEMP_LED_COLR<= "00000000";END IF;

WHEN "1111" => IF TEMP_LED_ROW = "01111111" THEN TEMP_LED_COLR<=

"00001000";ELSE TEMP_LED_COLR<= "00000000";END IF;

END CASE;

END IF;

ELSIF LOSE = 1 THEN --若失败则显示×

IF TEMP_LED_ROW= "10111111" THEN TEMP_LED_COLR<= "01001000";END IF;

IF TEMP_LED_ROW= "11011111" THEN TEMP_LED_COLR<= "00110000";END IF;

IF TEMP_LED_ROW= "11101111" THEN TEMP_LED_COLR<= "00110000";END IF;

IF TEMP_LED_ROW= "11110111" THEN TEMP_LED_COLR<= "01001000";END IF;

IF TEMP_LED_ROW= "01111111" THEN TEMP_LED_COLR<= "00000000";END IF;

IF TEMP_LED_ROW= "11111011" THEN TEMP_LED_COLR<= "00000000";END IF;

IF TEMP_LED_ROW= "11111101" THEN TEMP_LED_COLR<= "00000000";END IF;

IF TEMP_LED_ROW= "11111110" THEN TEMP_LED_COLR<= "00000000";END IF;

ELSIF WIN = 1 THEN --若成功则显示笑脸

IF TEMP_LED_ROW= "10111111" THEN TEMP_LED_COLR<= "01001000";END IF;

IF TEMP_LED_ROW= "11011111" THEN TEMP_LED_COLR<= "00000000";END IF;

IF TEMP_LED_ROW= "11101111" THEN TEMP_LED_COLR<= "01001000";END IF;

IF TEMP_LED_ROW= "11110111" THEN TEMP_LED_COLR<= "00110000";END IF;

END IF;

END PROCESS P7;

P8:PROCESS(CLK_1K) --显示边框

BEGIN

IF (CLK_1K'EVENT AND CLK_1K = '1')THEN

CASE TEMP_LED_ROW IS

WHEN "01111111" => TEMP_LED_ROW <= "10111111" ;TEMP_LED_COLG <= "10000100";

WHEN "10111111" => TEMP_LED_ROW <= "11011111" ;TEMP_LED_COLG <= "10000100";

WHEN "11011111" => TEMP_LED_ROW <= "11101111" ;TEMP_LED_COLG <= "10000100";

WHEN "11101111" => TEMP_LED_ROW <= "11110111" ;TEMP_LED_COLG <= "10000100";

WHEN "11110111" => TEMP_LED_ROW <= "11111011" ;TEMP_LED_COLG <= "11111100";

WHEN "11111011" => TEMP_LED_ROW <= "01111111" ;TEMP_LED_COLG <= "11111100";

WHEN OTHERS => TEMP_LED_ROW <= "01111111";

END CASE;

END IF;

END PROCESS P8;

P9:PROCESS (CLK_1K) --SHU MA GUAN SAO MIAO BEGIN --扫描数码管,给四个数码管四个不同的信号 IF (CLK_1K'EVENT AND CLK_1K = '1')THEN

CASE TEMP_SEG_SELECT IS

WHEN "011111" => TEMP_SEG_SELECT <= "101111"; SEG_SHOW <= TEMP_SEG1;

WHEN "101111" => TEMP_SEG_SELECT <= "110111"; SEG_SHOW <= TEMP_SEG4;

WHEN "110111" => TEMP_SEG_SELECT <= "111011"; SEG_SHOW <= TEMP_SEG3;

WHEN "111011" => TEMP_SEG_SELECT <= "011111"; SEG_SHOW <= TEMP_SEG2;

WHEN OTHERS => TEMP_SEG_SELECT <= "101111";SEG_SHOW <= TEMP_SEG1;

END CASE;

END IF;

END PROCESS P9;

P10:PROCESS(CLK_1S)

--COUNTDOWN_1

BEGIN --60秒倒计时的个位

IF (CLK_1S'EVENT AND CLK_1S = '1')THEN

IF CLEAR_TEMP = '1' THEN TEMP_SEG1 <="1111110";--复位有效显示0

ELSIF WIN = 1 THEN TEMP_SEG1 <="1111110";--输或赢后显示0

ELSIF LOSE =1 THEN TEMP_SEG1 <="1111110";

ELSIF( WIN =0 AND LOSE = 0)THEN --处于倒计时状态时循环显示0-9 CASE TEMP_SEG1 IS

WHEN "1111110" => TEMP_SEG1 <= "1111011";--0

WHEN "1111011" => TEMP_SEG1 <= "1111111";--9

WHEN "1111111" => TEMP_SEG1 <= "1110000";--8

WHEN "1110000" => TEMP_SEG1 <= "1011111";--7

WHEN "1011111" => TEMP_SEG1 <= "1011011";--6

WHEN "1011011" => TEMP_SEG1 <= "0110011";--5

WHEN "0110011" => TEMP_SEG1 <= "1111001";--4

WHEN "1111001" => TEMP_SEG1 <= "1101101";--3

WHEN "1101101" => TEMP_SEG1 <= "0110000";--2

WHEN "0110000" => TEMP_SEG1 <= "1111110";--1

WHEN OTHERS => TEMP_SEG1 <= "1111011";--0

END CASE;

END IF;

END IF;

END PROCESS P10;

P11:PROCESS(CLK_1S) --COUNTDOWN_10 BEGIN --60秒倒计时的十位

IF CLEAR_TEMP= '1' THEN --复位有效显示0

TEMP_SEG2 <="1011111";

TEMP_10<= 0;

COUNTDOWN_60 <= 0;

ELSIF WIN = 1 THEN TEMP_SEG2 <="1111110"; --输或赢后显示0

ELSIF LOSE = 1 THEN TEMP_SEG2 <="1111110";

ELSIF (CLK_1S'EVENT AND CLK_1S = '1')THEN --计数器,相当于1Hz时钟进行10分频

COUNTDOWN_60 <= COUNTDOWN_60+1;

IF TEMP_10 =9 THEN

TEMP_10<=0;

ELSE TEMP_10<=TEMP_10+1;

END IF;

IF TEMP_10=0 THEN --每十秒变一次,循环显示5-0

CASE TEMP_SEG2 IS

WHEN "1011011" => TEMP_SEG2 <= "0110011";--5

WHEN "0110011" => TEMP_SEG2 <= "1111001";--4

WHEN "1111001" => TEMP_SEG2 <= "1101101";--3

WHEN "1101101" => TEMP_SEG2 <= "0110000";--2

WHEN "0110000" => TEMP_SEG2 <= "1111110";--1

WHEN OTHERS => TEMP_SEG2 <= "1011011";--0

END CASE;

END IF;

END IF;

END PROCESS P11;

P12:PROCESS(CLK_1K) --liesaomiao

BEGIN --键盘列扫描

IF(CLK_1K'EVENT AND CLK_1K='1') THEN

CASE TEMP_KEY_COL IS --1-4列循环扫描

WHEN "0111" => TEMP_KEY_COL <= "1011";

WHEN "1011" => TEMP_KEY_COL <= "1101";

WHEN "1101" => TEMP_KEY_COL <= "1110";

WHEN "1110" => TEMP_KEY_COL <= "0111";

WHEN OTHERS => TEMP_KEY_COL <= "0111";

END CASE;

END IF;

END PROCESS P12;

P13:PROCESS(CLK_1K)

BEGIN

IF(CLK_1K'EVENT AND CLK_1K='1') THEN

CASE TEMP_KEY_COL IS

WHEN "0111" => --在列确定情况下,根据行值对CODE进行赋值 CASE TEMP_KEY_ROW IS

WHEN "0111" => CODE <= "0000";POKE_FLAG<=1;

WHEN "1011" => CODE <= "0001";POKE_FLAG<=1;

WHEN "1101" => CODE <= "0010";POKE_FLAG<=1;

WHEN "1110" => CODE <= "0011";POKE_FLAG<=1;

WHEN OTHERS => POKE_FLAG<=0;

END CASE;

WHEN "1011" =>

CASE TEMP_KEY_ROW IS

WHEN "0111" => CODE <= "0100";POKE_FLAG<=1;

WHEN "1011" => CODE <= "0101";POKE_FLAG<=1;

WHEN "1101" => CODE <= "0110";POKE_FLAG<=1;

WHEN "1110" => CODE <= "0111";POKE_FLAG<=1;

WHEN OTHERS => POKE_FLAG<=0;

END CASE;

WHEN "1101" =>

CASE TEMP_KEY_ROW IS

WHEN "0111" => CODE <= "1000";POKE_FLAG<=1;

WHEN "1011" => CODE <= "1001";POKE_FLAG<=1;

WHEN "1101" => CODE <= "1010";POKE_FLAG<=1;

WHEN "1110" => CODE <= "1011";POKE_FLAG<=1;

WHEN OTHERS => POKE_FLAG<=0;

END CASE;

WHEN "1110" =>

CASE TEMP_KEY_ROW IS

WHEN "0111" => CODE <= "1100";POKE_FLAG<=1;

WHEN "1011" => CODE <= "1101";POKE_FLAG<=1;

WHEN "1101" => CODE <= "1110";POKE_FLAG<=1;

WHEN "1110" => CODE <= "1111";POKE_FLAG<=1;

WHEN OTHERS => POKE_FLAG<=0;

END CASE;

WHEN OTHERS=>NULL;

END CASE;

IF CLEAR_TEMP = '1' THEN

POKE_FLAG<=0;

END IF;

END IF;

END PROCESS P13;

P14:PROCESS(CLK_1K)

BEGIN --按键同时灯亮

IF(CLK_1K'EVENT AND CLK_1K='1') THEN

CASE CODE IS

WHEN"0000"=> TEMP_LIGHT <="00000001";

WHEN"0001"=> TEMP_LIGHT <="00000010";

WHEN"0010"=> TEMP_LIGHT <="00000100";

WHEN"0011"=> TEMP_LIGHT <="00001000";

WHEN OTHERS=> TEMP_LIGHT<="11111111";

END CASE;

END IF;

END PROCESS P14;

P15:PROCESS (CLK_1K) --FEN SHU BEGIN

IF (CLK_1K'EVENT AND CLK_1K = '1')THEN—在数码管显示分数

IF WIN = 1 THEN TEMP_SEG3 <="1111110";TEMP_SEG4 <= "1111110";

ELSIF LOSE = 1 THEN TEMP_SEG3 <="1111110";TEMP_SEG4 <= "1111110"; ELSIF (WIN = 0 AND LOSE = 0 )THEN

CASE SCORE IS --根据score信号分别显示0-10 WHEN 10=>TEMP_SEG3<="1111110";TEMP_SEG4<="0110000" ;--10 WHEN 0 => TEMP_SEG3 <="1111110";TEMP_SEG4 <= "0000000";--0 WHEN 9=> TEMP_SEG3 <="1111011" ;TEMP_SEG4 <= "0000000";--9 WHEN 8=> TEMP_SEG3 <="1111111" ;TEMP_SEG4 <= "0000000";--8 WHEN 7=> TEMP_SEG3 <="1110000" ;TEMP_SEG4 <= "0000000";--7 WHEN 6=> TEMP_SEG3 <="1011111" ;TEMP_SEG4 <= "0000000";--6 WHEN 5=> TEMP_SEG3 <="1011011" ;TEMP_SEG4 <= "0000000";--5 WHEN 4=> TEMP_SEG3 <="0110011" ;TEMP_SEG4 <= "0000000";--4 WHEN 3=> TEMP_SEG3 <="1111001" ;TEMP_SEG4 <= "0000000";--3 WHEN 2=> TEMP_SEG3 <="1101101" ;TEMP_SEG4 <= "0000000";--2 WHEN 1=> TEMP_SEG3 <="0110000" ;TEMP_SEG4 <= "0000000";--1 WHEN OTHERS=> TEMP_SEG3 <= "1111110";TEMP_SEG4"1111110";--0 END CASE;

END IF;

END IF;

END PROCESS P15;

P16: PROCESS(CLK_1K,CLEAR)

BEGIN

IF CLEAR_TEMP = '1' THEN

WIN <= 0;LOSE <= 0; --复位

ELSE

IF (COUNTDOWN_60>59 AND SCORE < 10) THEN --若60s到时且分数小于10则输 LOSE <= 1;

END IF;

IF (COUNTDOWN_60<60 AND SCORE > 9 ) THEN –若60秒未到且分数达到10则赢 WIN <= 1;

END IF;

END IF;

END PROCESS P16;

LED_ROW<=TEMP_LED_ROW;

LED_COL_G<=TEMP_LED_COLG;

LED_COL_R<=TEMP_LED_COLR;

SEG_SELECT<=TEMP_SEG_SELECT;

TEMP_KEY_ROW<=KEY_ROW;

KEY_COL<=TEMP_KEY_COL;

--LIGHT<=TEMP_LIGHT;

CLEAR_TEMP<=CLEAR;

END a;

五.功能说明及资源利用情况

1.画面:通电后,在点阵上会一直显示5*5的绿色边框,当判定输或赢后,边框中间会相应地显示×或笑脸,开始游戏后,在边框中4*4范围内会每隔两秒随机出现一个亮点代表地鼠,两秒到时或地鼠被击中,地鼠会消失。

2.计时:游戏中由两个计数器分别完成60s和2s的计时功能,其中60s计时结果会显示在数码管上。

3.计分:当地鼠出现在点阵上,在2秒内按下相应的按键,则计1分,位置不对或超时不得分。在60秒内得到10分则赢,60秒到时没得到10分则负。积分结果会显示在数码管上。

4.按键:通过按键完成“打”的操作,若打中则加分,同时灯亮。

5.资源利用情况

六.故障及问题分析

1.创建工程时,我先是用数字命名的工程,但是后拉编译时没法通过,重新创建工程才能成功编译,因为工程名不能是全数字,或是包含汉字路径。还应注意实体命名应该与工程名也保持一致。

2.在做键盘模块时,我一开始用的是行扫描,虽然编译没有错误,但是烧写到实验板上键盘却没有反应,后来换成行扫描才成功,因为我没有注意到实验板上行是输入信号,列是输出信号。

3.键盘开始存在打一次计多分的情况,后来通过加入一个标志位解决了。每出现一个随机数(即地鼠的位置)标志位变为0,当检测到随机数与键盘输入值相对应时,计一分,同时标志位变为1,直到下一个随机数出现标志位才变为0,这样就解决了打一次,计多分的问题,每出现一个随机数,不管打多少下,最多只能计一分。

4.在不同的process里面不能对同一个signal赋值,否则编译会发生错误。尽量将对一个signal赋值的语句写在一个process里。

5.游戏开始存在一个bug,因为记录键盘值的四位二进制数有默认初始值0000,对应点阵左上角的位置,所以即使不按键盘,当地鼠出现在该位置时,计分器也会加1。为此我又设置了一个标志位,在键盘按下时变为1,只有标志位为1时才能计分。也可以将记录键盘值的数改为5位2进制数,这样就可以将键盘初始值设为一个地鼠不会出现的值。

七.总结和结论

通过本次数电综合实验,我对VHDL语言的运用、对QuartusII软件的掌握熟练程度,以及对编程思想的理解都有了一定进步。

这次实验不像上学期的实验那样做一些基础的功能,这次的实验更考验我们的综合能力,

因此一开始接触到题目的时候我一头雾水,完全没有思路该从哪里入手,通过第一堂课老师的讲解,我对上学期学习的分频器,计数器,译码器等基本逻辑单元进行了回忆,慢慢有了一定的初步构想。然后我通过画逻辑设计流程图、状态转移图、模块划分框图等,对这次实验的内容有了进一步的具体构思。但是流程图等还是很抽象,等到了具体写代码的时候,我才发现很多看似简单的逻辑没有那么容易实现。

在具体实现这个工程的过程中,我遇到了很多问题,也发现了很多设计中很难实现的地方,因此,我一边找出自己代码中的逻辑问题,一边优化我的流程图。一步步找出问题并解决。在必要的地方与同学进行交流讨论,学习他们的好的方法,借鉴他们的思想,对自己的程序进行改进。在这一步步发现问题,思考问题,解决问题的过程中,我发现了很多平时没有注意到的细节问题,并对它们有了更进一步的认识理解,我认为这对我未来的学习生活都有很大帮助。

北邮数字电路综合实验报告

数字电路综合实验报告 简易智能密码锁 一、实验课题及任务要求 设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。 基本要求: 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行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。由此可确定按键位置。

数字电路课程设计打地鼠资料整理

xx科技大学 数电课程设计报告 仿真设计课程名称:数字电子实验仿真仿真设计项目名称:打地鼠游戏 院系:计算机与通信工程 专业班级: 组长: 组员:

打地鼠游戏 一、实验仿真目的: 1、掌握时序逻辑电路的一般设计办法。 2、掌握计数器的设计原理和应用。 3、掌握组合逻辑电路的一般设计办法。 4、掌握定时电路的设计和使用。 5、掌握译码显示电路的原理和应用。 6、通过打地鼠游戏的设计,锻炼对数字单元电路的灵活应用和综合设计能力,提高学生综合应用知识的能力和创新能力。 二、实验所用的主要元器件: 双D触发器74LS74脉冲源计数器2to4译码器

以及若干基础数电元器件 4to16译码器 三、实验仿真电路原理 总实现图: 各模块实现的原理及步骤: A.产生四个指示灯的随机点亮: 1.使用四个计数器并行运行

10进制计数器偶数循环0-2-4-6-8 奇数循环1-3-5-7-9七进制循环 2.通过一个四进制循环来选择这四个计数器的当时时刻的数字, ,如图,四进制循环接上74HC139N。 3.选择数字 使用D触发器做了一个并入并处的移位寄存器,将四个计数器产生的数字的二进制送入寄存器中,

上图即使实现选择四个计数器数字 4.实现灯的随机点亮 将上图选择的二进制数字接入74HC154W4to10的译码器中,将使输出端1到10管脚有效,使(210)、(39)、(48)、(57)分别使能一个灯。 B.打地鼠开关的设计 使用的是可复位的开关,把开关和灯同接一个与门,同时有效则输出高电平。 C.实现打地鼠记分功能

把开关的有效电位产生的脉冲接入计数器的CLK端,则实现每次开关和灯同时有效产生的脉冲能被记录。 D.实现每10次暂停电路 将四盏灯或接入10进制计数器的CLK端,十次满之后RCO输出高电平,使用其使能四进制计数器的CLR端,实现功能。 E.时钟模块电路的设计 电路接通电源的瞬间,由于电容C1来不及充电,Vc=0v,所以555定时器状态为1,输出Vo为高电平。同时,集电极输出端(DIS)对地断开,电源Vcc对电容C1充电,电路进入暂稳 态I,此后,电路周而复始地产生周期性的输出脉冲。多谐振荡器两个暂稳态的维持时间取决于RC充、放电回路的参数。震荡频率公式

北邮打地鼠的游戏设计与实现

数电实验报告 题目:打地鼠的游戏设计与实现 姓名: 学号: 班级: 学院: 电子工程学院 2015年 11 月 8日

一、 任务要求 基本要求 1、设计一个挑战反应速度的“打地鼠”游戏,采用用 8×8双色点阵显示游戏界面,其中游戏边界采用绿色 LED 显示,随机出现的地鼠采用红色 LED 显示,游戏有 16个洞穴,如图 1所示。 2、游戏洞穴 每次随机出现一个地鼠, 每个地鼠的最长保持时间为 2 秒,2 秒后随机出现下一个地鼠。以 4×4键盘的按键代表锤子,16个洞穴与 16个按键一一对应,一旦锤子在 2秒内击中地鼠,地鼠消失,数码管计分器分数加 1分;若锤子一直没有击中地鼠,2秒后该地鼠消失。用两个数码管显示游戏成绩,当游戏成绩达到 10分时游戏结束,点阵显示字符“V”。 3、用两个数码管对整个游戏进行倒计时,当游戏时间超过 59秒而成绩未达到 10分时,游戏失败,点阵显示字符“X”。 4、按复位键重新开始游戏,并开始倒计时。 提高要求: 1、增加游戏难关,在边界内每次随机出现两个地鼠,两个地鼠的最长保持时间均为2秒,2 秒后随机出现下两个地鼠,锤子击中一个地

鼠加1分,当游戏成绩达到20分而且游戏时间未超过59秒时,游戏结束,显示字符“V”,否则显示字符“X”。 2、自拟其他功能。 二、系统设计 设计思路: 1、将该程序进行分模块设计。可以将程序分为:分频模块、随机数产生模块、比较模块、键盘电路、显示模块、计时模块、游戏结束模块。 2、分模块进行相应模块的编写。 3、对编好的模块进行测试。 4、编写主程序并进行调试。 总体框图: 分块设计:

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知 b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异 或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能, 并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器可以由两个半加器和一个或门构 成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表达式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)( ⑶利用全加器的逻辑表达式和半加器的逻 辑功能,实现全加器。 用3线—8线译码器(74L138)和逻辑门设计实现函数 CBA A B C A B C A B C F +++= 设计实现过程:⑴利用QuartusII 选择译码器(74L138)的图形模块

北邮数电实验VHDL源代码完整2013年

北邮数电实验VHDL源代码完整版 注:北邮信通院数电实验,大二下共四次实验,以下为四次实验的完整代码,仅供参考,希望学弟学妹在抄代码的时候了解每一行代码的含义。知识是自己的。别忘了,北邮的未来靠你们。 注意事项:1学校部分电脑打不开07版word文件(后缀docx),建议大家准备一份TXT以防万一 2运行出错时可能是你输入有误,比如中文和英文符号弄错了 3数电实验很简单,但要心细,一定要按老师说的做 4数电实验报告千万不要抄袭,老师判断力很强 实验一: 半加器老师会给出,全加器是画图,怎么画书上有,不用源代码。 实验二: (1)3位二进制数比较器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY comp3 IS PORT(A:IN STD_LOGIC_VECTOR(2 DOWNTO 0); B:IN STD_LOGIC_VECTOR(2 DOWNTO 0); YA,YB,YC:OUT STD_LOGIC); END comp3; ARCHITECTURE behave OF comp3 IS BEGIN PROCESS(A,B) BEGIN IF(A>B)THEN Y A<='1';YB<='0';YC<='0'; ELSIF(A

END IF; END PROCESS; END behave; (2)4选1数据选择器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY mux4 IS PORT(A:IN STD_LOGIC_VECTOR(1 DOWNTO 0); D0,D1,D2,D3:IN STD_LOGIC; Y,YB:OUT STD_LOGIC); END mux4; ARCHITECTURE behave OF mux4 IS BEGIN PROCESS(A,D0,D1,D2,D3) BEGIN CASE A IS WHEN"00"=> Y<=D0;YB <= NOT D0; WHEN"01"=> Y<=D1;YB <= NOT D1; WHEN"10"=> Y<=D2;YB <= NOT D2; WHEN"11"=> Y<=D3;YB <= NOT D3; WHEN OTHERS=> Y<='Z';YB<='Z'; END CASE; END PROCESS; END behave; (3)8421码转换为格雷码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY trans1 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END trans1; ARCHITECTURE trans_gray OF trans1 IS BEGIN B(0)<=A(0)XOR A(1); B(1)<=A(1)XOR A(2); B(2)<=A(2)XOR A(3);

北邮数电实验报告

北京邮电大学 实验报告实验名称:数电电路与逻辑设计实验 学院:信息与通信工程学院 班级: 姓名: 学号: 班内序号: 日期:

一. 实验一:Quartus II 原理图输入法设计 1. 实验名称和实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块 元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号入信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数 F=A B C +A B C +A B C + A B C 。 2. 实验原理图及波形图 (1)半加器 (2)全加器

(3)74LS38 3.仿真波形图分析 (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’,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。 2.实验代码及波形图 (1)共阴极7段数码管译码器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY GUAN IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END GUAN; ARCHITECTURE encoder_arch OF GUAN IS BEGIN PROCESS(A) BEGIN C<="011111"; CASE A IS WHEN"0000"=> B<="1111110";--0 WHEN"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

北邮数字电路与逻辑设计实验-实验报告(上)

北京邮电大学电路实验中心<数字电路与逻辑设计实验(上)> 实 验 报 告 班级: 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,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 四、实验原理图 (1)半加器原理图 (2)全加器原理图

电子电路测量实验(北邮)

北京邮电大学 电子电路综合设计实验 实验报告 课题名称:函数信号发生器 院系:电子工程学院

摘要 本实验的目的在于使用集成运算放大器设计一个方波—三角波—正弦波发生器。其中,由施密特触发器组成的多谐振荡器产生方波,再经积分运算电路产生三角波。最后,经过差分放大器,利用晶体管的非线性特性将三角波变换为正弦波。并要求波形达到一定的幅值、频率等要求。 关键词 函数信号发生器方波三角波正弦波集成运放 正文 一、设计任务要求 1基本要求 (1)信号输出频率在1~10kHz范围内连续可调,无明显失真。 (2)方波信号输出电压U opp=12V(误差≤20%),上升、下降沿小于10us,占空比范围为30%~70%。 (3)三角波信号输出电压U opp=8V(误差≤20%)。 (4)正弦波信号输出电压U opp≥1V 2提高要求 (1)将输出方波改为占空比可调的矩形波,占空比可挑范围为30%‐70%;

(2)三种波形的输出峰峰值U opp均可在1V-10V 范围内连续可调。 3+ 二、实验原理及设计过程 1总体思路 函数信号发生器的构成方法多样。本实验来看,可以先产生方波,由方波积分得到三角波,在由三角波经过整形得到正弦波;也可以先产生正弦波,将正弦波进行整形得到方波,在通过积分器产生三角波。在器件使用上,可以是分立元件电路,也可以采用集成电路。 根据提供的器材和资料,选择设计由集成运算放大器和晶体管放大器构成的方波—三角波—正弦波发生电路(如下图二)。 2原理结构框图 三、Multisim仿真过程及波形输出 1元器件选择

(1)方波—三角波发生电路 (最终电路见附录) ●芯片选择:对比uA741CP与LM318N的相关参数。选择转换速度较快 的LM318N作为矩形波发生电路的芯片,uA741CP作为三角波发生电路的芯片。 ●稳压管选择:根据方波U opp =12V,方波幅度限制在-(U Z+U D)~+(U Z+U D), 故选择稳压值为U Z =6V的稳压管。查阅资料,在Multisim中选择 1N4734A单稳压管,放置为稳压对管。 ●电阻电容选择: 根据方波和三角波输出峰峰值的要求(12V、8V),R f和R1的取值应 满足R f:R1=3:2。为使电路易起振,在这里取R f=30kΩ,R1=20kΩ。 根据直流平衡电阻的计算原理,得R3=(30||20)kΩ=12kΩ。 根据方波输出幅度选择限流电阻R o=2kΩ。 同时在三角波电路中,由公式R2C=αR f /4f R1 计算得R2=5kΩ,C=0.01 μF。 根据直流平衡电阻的计算方法,得R4=R2 =5kΩ。 为达到频率的可调范围,选择R p1=100kΩ的滑动变阻器。

北京邮电大学电路实验报告-(小彩灯)

北京邮电大学电路实验报告-(小彩灯)

电子电路综合实验报告课题名称:基于运算放大器的彩灯显示电路的设计与实现 姓名:班级:学号: 一、摘要: 运用运算放大器设计一个彩灯显示电路,通过迟滞电压比较器和反向积分器构成方波—三角波发生器,三角波送入比较器与一系列直流电平比较,比较器输出端会分别输出高电平和低电平,从而顺序点亮或熄灭接在比较器输出端的发光管。 关键字: 模拟电路,高低电平,运算放大器,振荡,比较 二、设计任务要求: 利用运算放大器LM324设计一个彩灯显示电路,让排成一排的5个红色发光二极管(R1~R5)重复地依次点亮再依次熄灭(全灭→R1→R1R2→R1R2R3→R1R2R3R4→R1R2R3R4R5→R1R2R3R4→R1R2R3→R1R2→R1→全灭),同时让排成一排的6个绿色发光二极管(G1~G6)单光

三角波振荡电路可以采用如图2-28所示电路,这是一种常见的由集成运算放大器构成的方波和三角波发生器电路,图2-28中运放A1接成迟滞电压比较器,A2接成反相输入式积分器,积分器的输入电压取自迟滞电压比较器的输出,迟滞电压比较器的输入信号来自积分器的输出。假设迟滞电压比较器输出U o1初始值为高电平,该高电平经过积分器在U o2端得到线性下降的输出信号,此线性下降的信号又反馈至迟滞电压比较器的输入端,当其下降至比较器的下门限电压U th-时,比较器的输出发生跳变,由高电平跳变为低电平,该低电平经过积分器在U o2端得到线性上升的输出信号,此线性上升的信号又反馈至迟

滞电压比较器的输入端,当其上升至比较器的上门限电压U th+时,比较器的输出发生跳变,由低电平跳变为高电平,此后,不断重复上述过程,从而在迟滞电压比较器的输出端U o1得到方波信号,在反向积分器的输出端U o2得到三角波信号。假设稳压管反向击穿时的稳定电压为U Z,正向导通电压为U D,由理论分析可知,该电路方波和三角波的输出幅度分别为: 式(5)中R P2为电位器R P动头2端对地电阻,R P1为电位器1端对地的电阻。 由上述各式可知,该电路输出方波的幅度由稳压管的稳压值和正向导通电压决定,三角波的输 出幅度决定于稳压管的稳压值和正向导通电压以及反馈比R1/R f,而振荡频率与稳压管的稳压值和正向导通电压无关,因此,通过调换具有不同稳压值和正向 导通电压的稳压管可以成比例地改变方波和三角波的幅度而不改变振荡频率。 电位器的滑动比R P2/R P1和积分器的积分时间常数R2C的改变只影响振荡频率而 不影响振荡幅度,而反馈比R1/R f的改变会使振荡频率和振荡幅度同时发生变化。因此,一般用改变积分时间常数的方法进行频段的转换,用调节电位器滑动头 的位置来进行频段内的频率调节。

北邮数字电路综合实验报告——交通灯控制器的VHDL实现

数字电路综合实验报告 班级: 姓名: 班内序号: 学号: 日期:

目录 一、实验摘要 (3) 二、实验任务 (3) 1.任务要求 (3) 2.任务解析 (3) 三、实验设计思路 (4) 1.状态转移图 (4) 2.流程图 (5) 3.模块确定 (5) 4.系统框图 (7) 四、程序代码 (7) ⒈主程序 (7) ⒉分频模块 (9) ⒊防抖模块 (10) ⒋交通灯控制模块 (11) ⒌数字译码模块 (14) 五、实验结果 (15) 1.仿真结果 (15) 2.实物结果 (17) 六、所遇问题分析 (17) 七、实验总结 (18)

交通灯控制器的VHDL实现 一、实验摘要 随着交通情况的日益复杂,交通灯在生活中所处的位置也越来越高。本实验就是基于VHDL语言编程实现了十字路口的交通灯控制器。对于交通等控制器的设计是分模块自顶向下的设计思想,软硬件结合来实现本设计。 关键字:交通灯、VHDL、控制器 二、实验任务 1.任务要求 1)南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20秒、5 秒和25秒; 2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制 器恢复原来状态,继续正常运行; 3)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间; 2.任务解析 东西(A车道)和南北(B车道)方向各有一组绿、黄、红灯用于指挥交通(如图1),绿灯、黄灯和红灯的持续时间分别为20 秒、5 秒和25 秒。 图1 十字路口交通灯模型

因此,可以设计如下四个状态,其关系为: 状态 亮灯情况 车辆行驶状况 持续时 间(秒)下一状态A车道B车道 S0 红亮红亮紧急状况,A/B车道均禁止通行~ S1 S1 绿亮红亮A车道通行,B车道禁止通行20 S2 S2 黄亮红亮A车道缓行,B车道禁止通行 5 S3 S3 红亮绿亮A车道禁止通行,B车道通行20 S4 S4 红亮黄亮A车道禁止通行,B车道缓行 5 S1 三、实验设计思路 1.状态转移图 图2 状态转移图

北邮数电实验分析报告-信息

北邮数电实验报告-信息

————————————————————————————————作者:————————————————————————————————日期:

数字电路与逻辑设计实验 姓名*** 学院信息与通信工程学院 专业信息工程 班级*** 学号**** 班内序号***

实验一 一、实验名称和实验任务要求 1.实验内容:QuartusII原理图输入法设计与实现。 2.实验目的: (1)熟悉用QuartusII原理图输入法进行电路设计和仿真。 (2)掌握QuartusII图形模块单元的生成与调用。 (3)熟悉实验板的使用。 3.实验任务要求: (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。 (2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信 号,发光二极管显示输出信号。 (3)用3线—8线译码器(74LS138)和逻辑门实现函数 F=(/)(/)(/)+(/)(/)+(/)(/)+,仿真验证其功能,并下载到实 验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 二、原理图 半加器模块和逻辑门设计实现的全加器: 三、仿真波形图及分析 电路实现了全加器的功能。全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ain⊕bin⊕cin

cout = (ain⊕bin)cin + ain*bin。 列出真值表: 输入输出 ain bin cin cout sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 仿真波形对比真值表,可以看出波形图与理论值完全符合。 四、故障及问题分析 1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。 解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。 2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟 也没继续下载。 解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。 实验二 一、实验名称和实验任务要求 1.实验内容:用VHDL设计与实现组合逻辑电路。 2.实验目的: (1)熟悉用VHDL语言设计组合逻辑电路的方法。 (2)熟悉用QuartusII文本输入法进行电路设计。 3.实验任务要求: (1)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出‘0’,仿真验证其功能,并下载到实验板测 试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号, 发光二极管显示输出信号。

北邮-电子电路综合设计实验(函数信号发生器)报告

电子电路综合设计实验报告 实验1 函数信号发生器的设计与实现 姓名:------ 学号:---------- 班内序号:--

一. 实验名称: 函数信号发生器的设计与调试 二.实验摘要: 采用运放组成的积分电路产生方波-三角波,可得到比较理想的方波和三角波。根据所需振荡频率的高低和对方波前后沿陡度的要求以及对所需方波、三角波的幅度可以确定合适的运放以及稳压管的型号、所需电阻的大小和电容的值。三角波-正弦波的转换是利用差分放大器来完成的,选取合适的滑动变阻器来调节三角波的幅度以及电路的对称性。同时利用隔直电容、滤波电容来改善输出正弦波的波形。 关键词: 方波三角波正弦波频率可调 三、设计任务要求 1.基本要求: (1)输出频率能在1-10KHz范围内连续可调,无明显失真; (2)方波输出电压Uopp=12V,上升、下降沿小于10us,占空比可调范围30%-70%; (3)三角波Uopp=8V; (4)正弦波Uopp错误!未找到引用源。1V. (5)设计该电路的电源电路(不要求实际搭建) 2.提高要求: (1)正弦波、三角波和方波输出波形的峰峰值Uopp均可在1V-10V内连续可调。 (2)三种输出波形的输出端口的输出阻抗小于100Ω。 (3)三种波形从同一端口输出,并能够显示当前输出信号的种类、大小和频率 (4)用CPLD设计DDS信号源 (5)其他函数信号发生器的设计方案 四、设计思路以及总体结构框图 本课题中函数发生器结构组成如下所示:由比较器和积分器组成方波—三角波产生电

路,比较器输出的方波经积分器得到三角波,三角波到正弦波的变换电路主要由差分放大器来完成。差分放大器具有工作点稳定,输入阻抗高,抗干扰能力较强等优点。特别是作为直流放大器时,可以有效地抑制零点漂移,因此可将频率很低的三角波变换成正弦波。波形变换的原理是利用差分放大器传输特性曲线的非线性。 图4-1 函数信号发生器的总体框图 五.分块电路和总体电路的设计 (1)方波——三角波产生电路 图5-1 方波-三角波产生电路

北邮-数电实验报告

北邮-数电实验报告

数字电路实验报告 学院:信息与通信工程 专业:信息工程 班级:2013211125 学号:2013210681 姓名:袁普

②:仿真波形图以及分析 波形图: 波形分析:通过分析ab ci三个输入在8中不同组合下的输出,发现与全加器的真值表吻合,说明实现了全加器的逻辑功能。同时看见波形中出现了毛刺(冒险),这也与事实一致。 ③:故障及问题分析 第一次在做全加器的时候发现找不到已经生成的半加器模块,后来发现是因为在建立工程时这两个项目没有建在同一个文件夹里,在调用的时候就找不到。后来我将全加器工程建在同一个文件夹里解决了此问题。

实验二:用VHDL设计和实现组合逻辑电路 一:实验要求 ①:用VHDL设计一个8421码转换为格雷码的代码转换器,仿真验证其功能。 ②:用VHDL设计一个4位二进制奇校验器,要求在为奇数个1时输出为1,偶数个1时输出为0,仿真验证其功能。 ③:用VHDL设计一个数码管译码器,仿真验证其功能,下载到实验板测试,要求用拨码开关设定输入信号,数码管显示输出信号,并且只使一个数码管有显示,其余为熄灭状态。 二:故障及问题分析 在刚开始实现让一个数码管显示的时候,我本来准备再设置6个输入和输出,通过实验板上的拨码来输入信息分别控制不同的数码管的的开闭状态,但是后来发现这样效率很低而且实验板上的拨码开关数量根本不够。在老师的提醒下,我最终在VHDL里直接增加了一个向量输出”011111”来直接控制cat0~5六个管脚,从而达到了实验的要求。

实验三:用VHDL设计和实现时序逻辑电路 一:实验要求 ①:用VHDL语言设计实现一个8421十进制计数器,要求有高电平复位功能,仿真验证其功能。 ②:用VHDL语言设计实现一个分频系数为12,输出为占空比50%方波的分频器,有高电平复位功能,仿真验证其功能。 ③:将(1),(2)和数码管译码器三个电路进行连接,仿真验证其功能,并下载到实验板进行测试,要求第三个数码管显示数字。二:报告内容 ①实验三(3)模块端口说明及模块代码 模块一:div12为一个有高电平复位功能的分频系数为12的分屏器,其输出是一个占空比50%的方波。此模块输入连接一个时钟输入,即可在输出端得到一个周期更大的方波输出。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div12 is port( clear,clk:in std_logic; clk_out:out std_logic ); end div12; architecture struct of div12 is signal temp:integer range 0 to 5; signal clktmp:std_logic; begin process(clk,clear) begin if(clear='1') then

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实验四连接图

北邮模电综合设计实验

电子电路综合设计实验 实验5自动增益控制电路的设计与实现 信息与通信工程学院 一.课题名称:自动增益控制电路的设计与实现 二.实验目的

1.了解AGC(自动增益控制)的自适应前置放大器的应用; 2.掌握AGC电路的一种实现方法; 3.提高独立设计电路和验证实验的能力。 三.实验摘要 自动增益控制电路的功能是在输入信号幅度变化较大时,能使输出信号幅度稳定不变或限制在一个很小范围内变化的特殊功能电路,简称为 AGC 电路。本实验采用短路双极晶体管直接进行小信号控制的方法,简单有效地实现AGC功能。 四.设计任务要求 1.基本要求: 设计一个AGC电路,要求设计指标以及给定条件为: ·输入信号:0.5~50mVrms; ·输出信号:0.5~1.5Vrms; ·信号带宽:100~5KHz。 2.提高要求: 设计一种采用其他方式的AGC电路。 五.设计思路与实验各部分功能 自动增益总体框图,主要包括驱动缓冲电路,级联放大电路,输出跟随电路和增益反馈电路四个部分组成。 1.驱动缓冲电路: 输入缓冲极,其设计电路图如图3所示; 输入信号V IN驱动缓冲极Q1,它的旁路射极电阻R3有四个作用:它将Q1的微分输出电阻提高到接近公式(1)所示的值。该电路中的微分输出电阻增加很多,使R4的阻值几乎可以唯一地确定这个输出电阻。 R D1≈r be+(1+βr ce/r be)(R3//r be) 由于R3未旁路,使Q1电压增益降低至: A Q1=-βR4/〔r be+(1+β)R3〕≈-R4/ R3 未旁路的R3有助于Q1集电极电流-电压驱动的线性响应。 Q1的基极微分输入电阻升至R dBASE=r be+(1+β)R3,与只有r be相比,它远远大于Q1的瞬时工作点,并且对其依赖性较低。

北邮数电 节拍器实验报告

数电实验报告 一、设计课题的任务要求 1)基本要求 1、速度在40~120 次/分钟范围内连续可调,通过2 个按键进行速度调节,一个用来增 加,一个用来减少,当长按按键时,按5 次/秒的速度连续增加或减少,用3 个数码管显示当前速度。 2、节拍有1/4、2/4、3/4、4/4、3/8、6/8 可选,通过一个按键选择,用2 个数码管显示。 3、通过一个按键开始和停止打节拍,开始后按照设置好的节拍和速度打节拍。 4、要求有声音和灯光提示,声音要有强弱区别,灯光可用不同颜色的发光二极管表示 强弱。 2)提高要求 通过一个按键选择时值(节奏类型),并在用点阵显示,如下图。 二、系统设计 节拍器的设计关键是由按键控制速度,并产生不同的分频。由于对节拍器不了解,实验结果与实际节拍器不同,不过vhdl用到的模块,实现的功能是一样的。 系统的顶层设计是: 输入:50MHz时钟cp、按键button,button1,button2,button3 输出:beep给蜂鸣器,led1,2,3分别给不同的led灯,countout,smg控制数码管显示,hang,lie控制点阵显示

节拍器的设计分为六个模块:速度设置模块vset,节拍和暂停按键处理模块jpset,分频模块fenpin,数码管显示模块ra;蜂鸣器(和二极管)模块fmq;点阵模块jpfs。 1.分频模块分频: 分频模块输入50M赫兹时钟cp,给其他模块提供分频后的时钟。输出Clk为分频比为25000000*12/(speed+40)),其每十二个周期等于对应速度的一个节拍周期,输出给蜂鸣器模块。Clk1s为250 000分频,输出给速度设置模块vset。Clkmap,clkbeep3为对时钟cp80 000分频625赫兹,clkmap输出给数码管模块作为扫描频率,clkbeep3为低音频率。 Clkcount,Clkbeep1为1250hz,Clkbeep1作为高音频率,Clkcount作为扫描频率检测时间片,输出到蜂鸣器模块。Clkbeep2为1000hz,作为中音频率。 2.速度设置模块vset: 按键button1,2分别为控制加和减的按键。Clk1s为检测按键扫描时钟,判断哪个按键按下,并判断按下时间,加减速度。输出speed为速度,输出到蜂鸣器模块,及数码管模块。 3.节拍和暂停按键处理模块jpset: Button是节拍设置按键,button3为暂停按键,对按键进行防抖处理。每次button按下,jps加一改变节拍,输出jps到蜂鸣器模块,点阵模块以及数码管模块。Button3每被按下暂停信号sigwait翻转,sigwait输出到蜂鸣器模块使暂停或开始。

北邮模电综合实验-简易电子琴的设计与实现.

电子测量与电子电路实验课程设计 题目: 简易电子琴的设计和制作 姓名孙尚威学院电子工程学院 专业电子信息科学与技术 班级学号班内序号指导教师陈凌霄 2015年 4 月 目录 一、设计任务与要求 (3) 1.1 设计任务与要求 (3) 1.2 选题目的与意义 (3) 二、系统设计分析 (3) 2.1系统总体设计 (3) 2.2 系统单元电路设计 (4) 2.2.1 音频信号产生模块 (4) 2.2.2 功率放大电路 (7) 2.2.3 开关键入端(琴键) (8) 三、理论值计算 (9) 3.1 音阶频率对应表 (9) 3.2 键入电路电阻计算 (9) 四、电路设计与仿真 (10) 4.1 电路设计 (10) 4.2 Multisim仿真 (11) 五、实际电路焊接 (11) 六、系统调试 (13)

6.1 系统测试方案 (13) 6.2 运行结果分析 (14) 七、设计体会与实验总结 (15) 一、设计任务与要求 1.1 设计任务与要求 了解由555定时器构成简易电子琴的电路及原理。设计并利用NE555集成运算电路以及外加电阻,电容在第一级产生不同频率的音乐,再利用LM386功率放大电路对音乐信号进行放大,最后通过扬声器产生21个音符。 1.2 选题目的与意义 (1)培养理论联系实际的正确设计思想,训练综合运用已经学过的理论和生产实际知识去分析和解决工程问题的能力。 (2)学习较复杂的电子系统设计的一般方法,了解和掌握模拟,数字电路等知识解决电子信息方面常见实际问题的能力。 (3)学习调试电子电路的方法,提高实际动手能力。了解由555定时器构成简易电子琴的电路及原理。 二、系统设计分析 2.1系统总体设计 由555电路组成的多谐振荡器,它的振荡频率可以通过改变振荡电路中的RC元件的数值进行改变。根据这一原理,通过设定一些不同的RC数值并通过控制电路,按照一定的规律依次将不同值的RC组件接 入振荡电路,就可以使振荡电路按照设定的需求,有节奏的发出已设定的音频信号,再利用LM386功率放大电路对音乐信号进行放大,最后通过扬声器产生音符。 图1:系统组成框图 2.2 系统单元电路设计 2.2.1 音频信号产生模块 利用NE555集成运算电路以及外加电阻,电容在第一级产生不同频率的音乐。555定时器是一种中规模集成电路,外形为双列直插8脚结构,体积很小,使用起来方便。只要在外部配上几个适当的阻容元件,就可以构成史密特触发器、单稳态触发器及自激多谐振荡器等脉冲信号产生与变换电路。它在波形的产生与变换、测量与控制、定时电路、家用电器、电子玩具、电子乐器等方面有广泛的应用。

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