实验四 下载及芯片测试实验(1)彩灯设计

合集下载

彩灯控制器设计及实验报告三篇

彩灯控制器设计及实验报告三篇

彩灯控制器设计及实验报告三篇篇一:多路彩灯控制器的设计一课程设计题目(与实习目的)(1)题目:多路彩灯控制器(2)实习目的:1.进一步掌握数字电路课程所学的理论知识。

2.熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进行电路设计。

3.了解数字系统设计的基本思想和方法,学会科学分析和解决问题。

4.培养认真严谨的工作作风和实事求是的工作态度。

5.作为课程实验与毕业设计的过度,课程设计为两者提供了一个桥梁。

二任务和要求实现彩灯控制的方法很多,如EPROM编程、RAM编程、单板机、单片机等,都可以组成大型彩灯控制系统。

因为本次实习要求设计的彩灯路数较少,且花型变换较为简单,故采用移位寄存器型彩灯控制电路。

(1)彩灯控制器设计要求设计一个8路移存型彩灯控制器,要求:1.彩灯实现快慢两种节拍的变换;2.8路彩灯能演示三种花型(花型自拟);3.彩灯用发光二极管LED模拟;4.选做:用EPROM实现8路彩灯控制器,要求同上面的三点。

(2)课程设计的总体要求1.设计电路实现题目要求;2.电路在功能相当的情况下设计越简单越好;3.注意布线,要直角连接,选最短路径,不要相互交叉;4.注意用电安全,所加电压不能太高,以免烧坏芯片和面包板。

三总体方案的选择(1)总体方案的设计针对题目设计要求,经过分析与思考,拟定以下二种方案:方案一:总体电路共分三大块。

第一块实现花型的演示;第二块实现花型的控制及节拍控制;第三块实现时钟信号的产生。

主体框图如下:方案二:在方案一的基础上将整体电路分为四块。

第一块实现花型的演示;第二块实现花型的控制;第三块实现节拍控制;第四块实现时钟信号的产生。

并在部分电路的设计上与方案一采用了完全不同的方法,如花型的控制。

主体框图如下:(2)总体方案的选择方案一与方案二最大的不同就在,前者将花型控制与节拍控制两种功能融合在一起,是考虑到只要计数器就可以实现其全部功能的原因,且原理相对简单。

彩灯板实验报告

彩灯板实验报告

一、实验目的本次实验旨在通过设计和制作彩灯板,掌握彩灯控制的基本原理和电路设计方法,提高电子电路设计及调试能力,同时了解彩灯在不同场合的应用。

二、实验原理彩灯板是一种以LED灯为显示单元,通过微控制器或单片机进行控制的电子显示设备。

其基本原理是利用LED灯的亮与灭来显示各种图案、文字或动画。

实验中使用的彩灯板主要由以下部分组成:1. LED灯:作为显示单元,通过不同的亮灭组合来显示不同的图案或文字。

2. 微控制器或单片机:作为彩灯板的控制核心,负责接收指令、处理数据、控制LED灯的亮灭。

3. 驱动电路:将微控制器或单片机的输出信号转换为适合LED灯驱动的电流或电压。

4. 电源:为彩灯板提供所需的电能。

实验中,我们将通过编程和电路设计来实现彩灯板的显示功能。

三、实验器材1. 彩灯板一块2. 微控制器或单片机一个3. LED灯若干4. 驱动电路模块5. 电源模块6. 连接线若干7. 编程器或编程软件四、实验步骤1. 电路搭建:根据彩灯板的数据手册,按照电路图搭建电路,包括连接LED灯、微控制器或单片机、驱动电路模块和电源模块等。

2. 编程:使用编程器或编程软件编写控制程序,实现彩灯板的显示功能。

程序内容主要包括:初始化LED灯状态设置LED灯的亮灭时间控制LED灯的亮灭顺序显示不同的图案或文字3. 调试:将编写好的程序烧录到微控制器或单片机中,观察彩灯板的显示效果,并根据实际情况进行调试。

4. 测试:完成调试后,对彩灯板进行测试,验证其功能是否满足设计要求。

五、实验结果与分析1. 电路搭建:按照电路图搭建完成后,彩灯板能够正常工作,LED灯能够按照程序控制亮灭。

2. 编程:通过编程实现了彩灯板的显示功能,包括显示文字、图案和动画等。

3. 调试:在调试过程中,发现了一些问题,如LED灯亮度不一致、部分LED灯不亮等。

经过分析,发现是驱动电路模块的问题,更换驱动电路模块后,问题得到解决。

4. 测试:经过测试,彩灯板的功能满足设计要求,显示效果良好。

彩灯控制电路设计与实现(VHDL编程)

彩灯控制电路设计与实现(VHDL编程)

实验名称:彩灯控制电路设计与实现实验任务要求:用VHDL 语言设计并实现一个彩灯控制电路,仿真并下载验证其功能。

彩灯有两种工作模式 ,可通过拨码开关或按键进行切换。

(1)单点移动模式:一个点在8个发光二极管上来回的亮(2)幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复设计思路和过程:可以将两种模式分开设计,再用一个控制钮进行切换。

两种模式本质一样,都是循环点亮灯。

可以用状态机设计。

首先明确设计对象的外部特征,输入信号只有时钟信号cp 和切换按钮此处取a;输出为检测的八个彩灯亮暗。

根据设计对象的操作控制步来确定有限状态机的状态。

取初始状态为s0,第一种模式共有14种状态循环,因而可取状态s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;第二种模式有八种状态,可共用第一种模式中的前八种状态,即为s0,s1,s2,s3,s4,s5,s6,s7。

根据题目要求的循环可以写出各个状态的下一状态,写完整个循环为止。

切换按钮可以用一个If 来总领。

单点移动模式:S0 S5S13 S7S8 S9 S10 S11 S1 S2 S3 S4S12 S6幕布式:流程图:彩灯电路设计语言:library ieee;use ieee.std_logic_1164.all;entity pmd isport(a,cp:in std_logic; %输入信号deng: out std_logic_vector(7 downto 0) %输出灯信号);end pmd;architecture arch of pmd istype all_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13);%枚举状态机状态 S0 S7 S6 S1 S5 S4S2 S3signal state:all_state; %状态转换符号begin %开始程序process(cp)beginif (cp'event and cp='1')then %时钟信号开始计数if(a='1')then %单点循环模式case state iswhen s0=> state<=s1;deng<="00000001"; %状态循环when s1=> state<=s2;deng<="00000010";when s2=> state<=s3;deng<="00000100";when s3=> state<=s4;deng<="00001000";when s4=> state<=s5;deng<="00010000";when s5=> state<=s6;deng<="00100000";when s6=> state<=s7;deng<="01000000";when s7=> state<=s8;deng<="10000000";when s8=> state<=s9;deng<="01000000";when s9=> state<=s10;deng<="00100000";when s10=> state<=s11;deng<="00010000";when s11=> state<=s12;deng<="00001000";when s12=> state<=s13;deng<="00000100";when s13=> state<=s0;deng<="00000010";when others =>state<=s0;deng<="00000000";end case;Else %切换为幕布式case state iswhen s0=> state<=s1;deng<="00011000";when s1=> state<=s2;deng<="00111100";when s2=> state<=s3;deng<="01111110";when s3=> state<=s4;deng<="11111111";when s4=> state<=s5;deng<="01111110";when s5=> state<=s6;deng<="00111100";when s6=> state<=s7;deng<="00011000";when s7=> state<=s0;deng<="00000000";when others =>state<=s0;deng<="00000000";end case;end if;end if;end process; end arch;输入波形:添加五十分频后的仿真程序:library ieee;use ieee.std_logic_1164.all;entity cd isport(a,clk:in std_logic;q: out std_logic_vector(7 downto 0));end cd;architecture a of cd istype all_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13);signal state:all_state;signal cnt : integer range 0 to 24999999; %50分频状态signal clk_tmp : std_logic;beginprocess(clk)Begin %开始运行分频信号if (clk'event and clk='1') thenif cnt=24999999 thencnt<=0;clk_tmp<= not clk_tmp;elsecnt<=cnt+1;end if;end if;if (clk_tmp'event and clk_tmp='1')then %分频后运行彩灯程序if(a='1')thencase state iswhen s1=> state<=s2;q<="00000010";when s2=> state<=s3;q<="00000100";when s3=> state<=s4;q<="00001000";when s4=> state<=s5;q<="00010000";when s5=> state<=s6;q<="00100000";when s6=> state<=s7;q<="01000000";when s7=> state<=s8;q<="10000000";when s8=> state<=s9;q<="01000000";when s9=> state<=s10;q<="00100000";when s10=> state<=s11;q<="00010000";when s11=> state<=s12;q<="00001000";when s12=> state<=s13;q<="00000100";when s13=> state<=s0;q<="00000010";when others =>state<=s0;q<="00000000";end case;elsecase state iswhen s0=> state<=s1;q<="00011000";when s1=> state<=s2;q<="00111100";when s2=> state<=s3;q<="01111110";when s3=> state<=s4;q<="11111111";when s5=> state<=s6;q<="00111100";when s6=> state<=s7;q<="00011000";when s7=> state<=s0;q<="00000000";when others =>state<=s0;q<="00000000";end case;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 cd isport(a,clk:in std_logic;q: out std_logic_vector(7 downto 0));end cd;architecture a of cd istype all_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13); signal state:all_state;beginprocess(clk)beginif (clk'event and clk='1') thenif(a='1') thencase state iswhen s0=> state<=s1;q<="00000001";when s1=> state<=s2;q<="00000010";when s2=> state<=s3;q<="00000100";when s3=> state<=s4;q<="00001000";when s4=> state<=s5;q<="00010000";when s5=> state<=s6;q<="00100000";when s6=> state<=s7;q<="01000000";when s7=> state<=s8;q<="10000000";when s8=> state<=s9;q<="01000000";when s9=> state<=s10;q<="00100000";when s10=> state<=s11;q<="00010000";when s11=> state<=s12;q<="00001000";when s12=> state<=s13;q<="00000100";when s13=> state<=s0;q<="00000010";when others =>state<=s0;q<="00000000";end case;elsecase state iswhen s0=> state<=s1;q<="00011000";when s1=> state<=s2;q<="00111100";when s2=> state<=s3;q<="01111110";when s3=> state<=s4;q<="11111111";when s4=> state<=s5;q<="01111110";when s5=> state<=s6;q<="00111100";when s6=> state<=s7;q<="00011000";when s7=> state<=s0;q<="00000000";when others =>state<=s0;q<="00000000";end case;end if;end if;end process;end a;故障及问题分析:1.编写这个程序时,很自然地想到用一个输入信号控制两种模式的切换,但把这个输入放在哪里,如何放,开始出现了几种想法。

彩灯控制程序设计实验

彩灯控制程序设计实验

彩灯控制程序设计实验本实验主要是为了让学生掌握单片机的GPIO控制输入输出嵌入式系统的基本原理,了解彩灯的控制原理,掌握运用彩灯控制的相关知识和技能。

在本实验的过程中,学生需要运用STM32F103单片机进行彩灯控制程序设计,通过模拟输入控制、中断服务控制、定时器控制、串口控制和PWM控制等方式,控制LED及RGB彩灯等外设,实现各种彩灯效果。

实验器材:1. STM32F103单片机开发板2. USB转串口线3. 彩灯开发板4. 杜邦线若干根实验环境:MCU开发环境:Keil5串口调试工具:SecureCRT实验步骤:1、搭建硬件环境将STM32F103单片机开发板和彩灯开发板连接起来。

连接方式如下:将单片机的PB9引脚连接在彩灯的DOUT引脚上;2、编写程序程序设计的主要思路在于,利用单片机的GPIO控制输入输出,通过串口调试工具与STM32F103单片机进行通信,实现彩灯的各种控制效果。

2.1控制LED输出例如,为了控制LED闪烁,可以将GPIOB的输出模式设置为高速推挽输出模式,可以利用HAL库中的GPIO_Init()函数进行配置,代码如下:void LED_GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStruct = {0};//使能GPIO口的时钟__HAL_RCC_GPIOB_CLK_ENABLE();//GPIO配置GPIO_InitStruct.Pin = GPIO_PIN_12;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);}在主函数中调用该函数后,即可控制LED的灯光频闪,代码如下:2.2通过按钮控制彩灯开启/关闭在彩灯板上有两个按钮,分别是PLAY和MODE。

彩灯控制器的设计与调试1

彩灯控制器的设计与调试1

彩灯控制器的设计与调试
一、实验目的
1.了解彩灯工艺过程。

2.掌握数字电路常用芯片的功能及使用方法。

3.学会数字电路的设计方法和调试方法。

二、实验仪器及元件
1.示波器 1台
2.万用表 1块
3.集成芯片:74LS194、74LS74、74LS90、74LS139、74LS160、74LS04、74LS00、NE556。

4.电阻、电容、LED灯若干。

三、设计任务
设计四路彩灯,其实现以下功能:
1.实现循环流水的效果;
2.在1实验基础上,实现在实验台的亮灯能够从中间向两边移动(用16个LED灯实现);3.在1实验基础上,实现在实验台的亮灯能够从中间向两边移动,再从两端向中间移动的效果(用16个LED灯实现);
4.在1实验基础上,分别实现在实验台的亮灯如图1、图2、图3、图4顺序亮灯效果。

图1
图2
图3
图4
四、设计具体步骤:
1、建立系统框图;
2、进行系统论证;
3、选择器件,进行电路设计;
4、上机仿真,进行系统调试。

5、进行实际安装调试。

六、实验报告
1、完整写出电路设计及分析验证过程,并画出电路图,如有仿真结果,请将仿真结果附在报告中。

2、说明电路的测试原理,写出调试和测试方法。

3、将测试结果进行分析。

4、对实验中发生及发现的问题进行分析。

七、芯片管脚图
74LS194管脚图。

四路彩灯设计实验报告

四路彩灯设计实验报告

四路彩灯设计实验报告1. 引言彩灯设计实验是电子实践课程中的一项基础实验,通过设计和搭建电路,控制四路彩灯的亮灭和颜色变化,培养学生对电路原理和电子元件的实际运用能力。

本实验报告将详细介绍实验的设计思路、实验过程和实验结果,并对实验中遇到的问题进行分析和总结。

2. 设计思路本实验的主要目标是设计一个能够控制四个灯泡亮灭和变化颜色的电路。

基于这个目标,我们采用了以下设计思路:1. 使用Arduino开发板作为控制中心,通过编程实现对彩灯的控制。

2. 运用PWM (脉宽调制)技术来控制灯泡的亮度和颜色变化。

3. 使用LED灯泡作为彩灯的光源,通过调整电流来控制亮度和颜色。

3. 实验过程3.1 实验器材和元件- Arduino开发板- 面包板- 杜邦线- RGB LED灯泡x 4- 电阻x 4- 电阻箱- 电源3.2 实验步骤3.2.1 电路搭建首先,我们将Arduino开发板和面包板连接起来,并将四个RGB LED 灯泡和电阻连接到面包板上。

连接电路的示意图如下:![电路示意图](circuit_diagram.png)3.2.2 程序编写接下来,我们使用Arduino开发软件编写程序。

程序的基本思路是通过控制PWM输出来控制灯泡的亮灭和颜色变化。

程序的核心代码如下:int redPin = 9;int greenPin = 10;int bluePin = 11;void setup() {pinMode(redPin, OUTPUT);pinMode(greenPin, OUTPUT);pinMode(bluePin, OUTPUT);}void loop() { analogWrite(redPin, 255); analogWrite(greenPin, 0); analogWrite(bluePin, 0); delay(1000);analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 0); delay(1000);analogWrite(redPin, 0); analogWrite(greenPin, 0); analogWrite(bluePin, 255); delay(1000);analogWrite(redPin, 255);analogWrite(greenPin, 255);analogWrite(bluePin, 0);delay(1000);}3.2.3 实验验证完成电路搭建和程序编写后,我们将Arduino开发板连接到电脑上,上传程序,并将电源接入电路。

彩灯实验报告

实验报告课程名称可编程逻辑器件实验项目名称彩灯学生班级学生姓名2013年 04 月 21 日目录一、实验目的和要求二、实验方案设计及其原理三、硬件要求四、源程序和下载结果五、实验结果分析六、实验收获和体验一、实验目的和要求熟悉分频的分频原理,并将之进行多次分频,将50MHZ的频率信号分为小频率输入,实现彩灯的闪烁快慢,进一步了解可编程程序的编写,熟用可编程的基本语句,能够独立思考并且完成一个的方案。

要求:1、要有4种花型变化2、多种花型可以自动变换、循环往复3、彩灯的快慢可以选择4、具有清零的开关二、实验方案设计及其原理经过对问题的分析和初步的整体思考,拟定以下方案:先将信号进行多次分频,以便使得彩灯的节奏可以选择,再用两个开关控制得到的四个频率,接着进行花型选择.第一次分出的频率为20HZ,第二次为10HZ,第三次为5HZ,第四次为0.5HZ;花型变换第一种:红灯先逐一亮起,接着是黄灯,最后是绿灯。

第二种:先依次亮前两盏红灯、黄灯、绿灯,再依次亮后面的两盏。

第三种:依次亮起四盏红灯、黄灯、绿灯。

第四种:亮起首尾的两盏红灯,中间的两盏黄灯,首尾的两盏绿灯,再中间的两盏红灯,首尾的两盏黄灯,中间的两盏绿灯。

三、硬件要求主芯片EPM240T100C5,3个开关,12个具有红黄绿的灯。

四、源程序和下载结果1.源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity caideng isport(rst,clk:in std_logic;speed:in std_logic_vector(0 to 1);r:out std_logic_vector(0 to 3);red,y,g:out std_logic);end;architecture one of caideng issignal d:integer range 0 to 26;signal clk1,clk2,clk3,clk4:std_logic; signal w:std_logic;beginprocess(clk)variable cnt1:integer range 0 to 1000; variable cnt2:integer range 0 to 1250; beginif clk'event and clk='1' thenif cnt1=1000 thencnt1:=0;if cnt2=1250 thencnt2:=0;clk1<=not clk1;elsecnt2:=cnt2+1;end if;elsecnt1:=cnt1+1;end if;end if;end process;process(clk1)variable cnt1:integer range 0 to 1; beginif clk1'event and clk1='1' then if cnt1=1 thencnt1:=0;clk2<=not clk2;elsecnt1:=cnt1+1;end if;end if;end process;process(clk2)variable cnt1:integer range 0 to 1; beginif clk2'event and clk2='1' then if cnt1=1 thencnt1:=0;clk3<=not clk3;elsecnt1:=cnt1+1;end if;end if;end process;process(clk3)variable cnt1:integer range 0 to 5; beginif clk3'event and clk3='1' thenif cnt1=5 thencnt1:=0;clk4<=not clk4;elsecnt1:=cnt1+1;end if;end if;end process;process(speed)begincase speed iswhen "00"=>w<=clk1;when "01"=>w<=clk2;when "10"=>w<=clk3;when "11"=>w<=clk4;end case;end process;process(w)beginif w'event and w='1' thenif d=26 thend<=0;else d<=d+1;end if;end if;end process;process(rst,d)variable r1:std_logic_vector(0 to 3); variable red1,y1,g1:std_logic; beginif rst='0' thenr1:="1111";red1:='0';y1:='0';g1:='0';elsecase d iswhen 0=>r1:="0111";red1:='1';y1:='0';g1:='0';when 1=>r1:="1011";red1:='1';y1:='0';g1:='0';when 2=>r1:="1101";red1:='1';y1:='0';g1:='0';when 3=>r1:="1110";red1:='1';y1:='0';g1:='0';when 4=>r1:="0111";red1:='0';y1:='1';g1:='0';when 5=>r1:="1011";red1:='0';y1:='1';g1:='0';when 6=>r1:="1101";red1:='0';y1:='1';g1:='0';when 7=>r1:="1110";red1:='0';y1:='1';g1:='0';when 8=>r1:="0111";red1:='0';y1:='0';g1:='1';when 9=>r1:="1011";red1:='0';y1:='0';g1:='1';when 10=>r1:="1101";red1:='0';y1:='0';g1:='1';when 11=>r1:="1110";red1:='0';y1:='0';g1:='1'; --一种亮法when 12=>r1:="0011";red1:='1';y1:='0';g1:='0';when 13=>r1:="0011";red1:='0';y1:='1';g1:='0';when 14=>r1:="0011";red1:='0';y1:='0';g1:='1';when 15=>r1:="1100";red1:='0';y1:='0';g1:='1';when 16=>r1:="1100";red1:='0';y1:='1';g1:='0';when 17=>r1:="1100";red1:='1';y1:='0';g1:='0'; --二种亮法when 18=>r1:="0000";red1:='1';y1:='0';g1:='0';when 19=>r1:="0000";red1:='0';y1:='1';g1:='0';when 20=>r1:="0000";red1:='0';y1:='0';g1:='1'; --三种亮法when 21=>r1:="0110";red1:='1';y1:='0';g1:='0';when 22=>r1:="1001";red1:='0';y1:='1';g1:='0';when 23=>r1:="0110";red1:='0';y1:='0';g1:='1';when 24=>r1:="1001";red1:='1';y1:='0';g1:='0';when 25=>r1:="0110";red1:='0';y1:='1';g1:='0';when 26=>r1:="1001";red1:='0';y1:='0';g1:='1'; --四种亮法end case;end if;r<=r1;red<=red1;y<=y1;g<=g1;end process;end;2.下载结果灯按照前面所示的花型进行亮着,并通过其中两个控制频率大小的开关(speed)可以进行控制灯闪烁的快慢,清零信号端(rst)可以执行所需要的要求,即当rst为1时,灯会按照所编写程序的要求运作。

fpga课程设计报告彩灯实验

fpga课程设计报告彩灯实验一、课程目标知识目标:1. 学生能理解FPGA的基本原理和结构,掌握彩灯实验相关的硬件描述语言(HDL)基础;2. 学生能描述数字电路设计的基本流程,并运用FPGA设计简单的数字电路;3. 学生掌握彩灯实验的原理,能够解释彩灯显示背后的逻辑控制过程。

技能目标:4. 学生能够运用所学知识,设计并实现一个基于FPGA的彩灯控制电路;5. 学生通过实际操作,提高问题解决能力和实验操作技能,包括电路调试和故障排查;6. 学生能够利用FPGA设计软件进行电路设计和仿真,并完成硬件的实现和测试。

情感态度价值观目标:7. 学生通过实验探究,培养对电子工程领域的兴趣,增强创新意识和实践能力;8. 学生在小组合作中,提升团队协作能力和沟通技巧,理解集体智慧的重要性;9. 学生能够在实验过程中,形成良好的工程伦理观念,认识到技术对社会发展的积极影响和责任。

二、教学内容本课程教学内容围绕FPGA的原理与应用,结合彩灯实验项目,进行以下组织和安排:1. FPGA基础知识:- 数字电路设计基础;- FPGA原理与结构;- 硬件描述语言(HDL)入门。

2. 彩灯实验原理与设计:- 彩灯显示原理;- FPGA在彩灯控制中的应用;- 彩灯控制电路设计流程。

3. 教学大纲与进度安排:- 第一周:FPGA基本原理学习,了解硬件描述语言;- 第二周:数字电路设计基础,学习彩灯显示原理;- 第三周:彩灯控制电路设计,进行FPGA编程与仿真;- 第四周:电路调试与测试,优化设计方案。

4. 教材关联内容:- 教材第3章:“数字电路设计基础”;- 教材第4章:“FPGA原理与结构”;- 教材第5章:“硬件描述语言(HDL)应用”;- 教材第6章:“数字电路设计实例”。

5. 实践环节:- 彩灯控制电路设计实践;- FPGA编程与仿真;- 电路调试与故障排查。

三、教学方法针对FPGA课程设计报告彩灯实验,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 对FPGA基本原理、数字电路设计基础和硬件描述语言(HDL)等理论知识进行系统讲解,为学生奠定扎实的理论基础。

数字电路实验 可编程彩灯电路实验报告

《数字电子技术基础》课程实验报告实验名称:班级:小组成员:一、实验目的1、掌握计数器、移位寄存器电路的原理及应用。

2、掌握比较器或译码器电路的应用方法。

3、掌握555电路的应用方法。

二、设计任务和要求1、分析图示电路功能。

2、完成振荡电路及分频电路的设计。

3、连接整体电路,测试分析实验结果。

要求:1、彩灯电路循环速度肉眼可辨。

2、可2灯循环,3灯循环,……,8等循环。

最少6灯,可扩张成可逆循环。

3、要求有功能扩展。

三、电路原理图:1.彩灯电路框图:2.电路总实验图:开关设置及实现功能:(1)选择拨码开关2到8开关中的一个实现2到8灯的循环。

(2)J2、J3接高电平时,实现预置功能,预置的值为01111111,可以看到LED13亮,其余灯灭。

(3)J3接高电平、J2接与非门时,实现LED灯右移的功能。

(4)J2接高电平、J3接与非门时,实现LED灯左移的功能。

(5)J2、J3接与非门时,实现暂停功能四、实验原件分析:1. 集成555定时器:集成555定时器的管脚图、内部结构图所示:555定时电路由2个比较器、1个基本RS 触发器、1个反相缓冲器、1个漏极开路的NMOS 管和3个5K 的电阻组成分压器组成,功能表见下: TH (6) TR (2) R(4) OUT(3) T 管 D (7) × × L L 导通 L >2/3UDD×H L 导通 L <2/3UDD >1/3UDD H 不变 不变 不变 <2/3UDD <1/3UDDHH截止H2. 74LS161从74LS161功能表功能表中可以知道,当清零端CR=0,计数器输出Q3、Q2、Q1、Q0立即为全0,这个时候为异步复位功能。

当CR=1且LD=0时,在CP 信号上升沿作用后,74LS161输出端Q3、Q2、Q1、Q0的状态分别与并行数据输入端D3,D2,D1,D0的状态一样,为同步置数功能。

而只有当CR=LD=EP=ET=1、CP 脉冲上升沿作用后,计数器加1。

数电综合实验——彩灯控制器的设计与调试

数电综合实验——彩灯控制器的设计与调试一、实验目的1.学会分析、设计和测试用555定时器构成的多谐振荡器。

2.熟悉移位寄存器和中规模集成计数器的工作原理。

3.利用移位寄存器和计数器设计彩灯控制电路,实现不同的闪烁效果。

二、彩灯控制器设计简介利用移位寄存器和计数器等设计一彩灯控制电路,改变电路的不同工作状态,控制彩灯变幻出不同的闪烁效果。

电路实用,也可以通过计算机仿真直观地看到循环彩灯的控制效果,综合运用所学数字电路知识,学会设计和调试方法,从而产生浓厚兴趣。

如果稍微改动控制电路,可以更加完善,完成基于移位寄存器的彩灯控制器设计。

在现代生活中,彩灯作为一种装饰,既可以增强人们的感观,起到广告宣传的作用,又可以增添节日气氛,为人们的生活增添亮丽,用在舞台上增强晚会灯光效果,利用控制电路可使彩灯(例如霓虹灯)按一定的规律不断的改变状态,不仅可以获得良好的观赏效果,而且可以省电(与全部彩灯始终全亮相比)。

因此,彩灯控制电路应用越来越丰富我们的生活,成为我们生活不可缺少的一部分。

本课题是利用四位双向移位寄存器为核心元件实现彩灯的循环控制。

2.1设计思路首先,利用555定时器与外部的阻容元件构成脉冲产生电路,再由计数器74160实现计时的功能,为脉冲分配器做好准备。

再由移位寄存器74LS194构成编码发生电路,由于移位寄存器74LS194上升沿有效,通过对输入端置数,加上脉冲的驱动来控制彩灯的闪烁,从而使彩灯按照我们的要求变化。

整个流程是由控制电路,编码发生电路和输出电路等组成。

此综合实验讲述了芯片计数器74LS160,555定时器,移位寄存器74LS194的基本原理及应用。

2.2 基本工作原理脉冲产生与整形电路555定时器产生脉冲驱动,再由十进制同步计数器74LS160,编码发生电路74LS194控制彩灯变化。

因此,通过控制74LS194的输出就可以实现我们想要的彩灯循环变化。

2.3彩灯控制器原理框图555 定时器74LS160计数器74LS194移位寄存器彩灯显示电路CP脉冲CD4069——增加驱动能力图1 工作原理框图2.4 相关芯片及硬件电路设计 2.4.1 74160十进制同步计数器芯片74LS160是一个十进制同步计数器,不仅可以对时钟脉冲进行计数,还可以用在定时、分频和信号产生等逻辑电路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四下载及芯片测试实验
一、实验目的:掌握引脚锁定、硬件下载及芯片测试方法。

学习开发板与外围电
路的连接以及与PC机的连接。

二、预习要求:实验前设计好彩灯显示控制电路程序。

彩灯的数目为8只。

要求
从左到右依次点亮一只灯,然后不停的循环。

认真阅读“KX2C5F+板_必读.pdf”文档。

特别是“使用注意1-
使用注意6”。

三、实验仪器:PC机,FPGA开发板,万用表,接线若干。

四、实验内容:
1、在所使用的计算机数据盘(E盘或F盘)里建立自己的文件夹(起
名要符合C的规则)。

2、在上述自己的文件夹中再建立两个文件夹(起名要符合C的规则)。

这两个文件夹一个称为底层文件夹,一个称为顶层文件夹。

底层文件夹存放彩灯显示控制程序,顶层文件夹存放顶层文件。

3、输入彩灯显示控制电路程序,将程序保存在底层文件夹中。

建立工
程,编译,改错,直至编译通过,最后仿真。

认真观察仿真波形,验证所设计电路的正确性。

创建该电路符号。

关闭该工程。

4、将底层文件夹中的VHDL文件和电路符号拷贝到顶层文件夹中。

5、在QUARTUSII中建立新的原理图文件,点击菜单File下的save as,
为这个空白原理图文件起名,保存(保存在顶层文件夹中),建立工程,当出现下图时,点击add all,将底层文件加入到顶层工程中。

点击’next’,直至完成工程的建立。

6、创建一个LPM_COUNTER。

双击原理图的空白处,出现的下面
“Symbol”框图。

点击MegaWizard Plug In Manager…,出现
点击“Next”,出现下图。

按箭头所指改变调整选项。

特别要注意,cnt 是为创建的LPM_COUNTER起的名称。

cnt前面的bocbi 为存放cnt文件的文件夹名。

点击“Next”,按照提示,创建的cnt如下图所示(具体操作参考教材P186)。

当出现下面框图时,
去掉最后一个红勾,点击”Finish”。

7、按下图连接好电路。

开发板上的时钟信号为20MHz,不适合直接加到彩灯显示控制电路上。

用上述的计数器将20MHz分频,取q[22]加到彩灯显示控制电路的CLK上。

保存,编译。

如果编译不成功,改错,编译,直至编译成功。

8、选定器件。

点击QuartusII菜单Assignments下的“Device”,出现选择器件系列及器件型号选择窗口。

按照实验中所给的器件型号选择器件系列及器件型号。

(请按照开发板上实际的芯片选择芯片系列,以及芯片型号)
选好器件后,重新全程编译。

9、查找管脚号。

观察开发板和外围电路。

将外围电路中的发光二极管编号(例如q(7),q(6)….q(0))。

确认电路的连接方法。

观察CLK的管脚号,并记录。

确定彩灯显示控制电路输出所接的端口,记录管脚号。

(例如q(7)准备接管脚号120,q(6)准备接管脚号122…..)
10、锁定管脚。

选择菜单Assignments下的Pins
出现下图。

在Location下选择对应管脚的管脚号。

将CLK锁定在开发板规定的管脚号上。

将输出端锁定在所选定的管脚号上。

所有的引脚锁定后,再次全程编译。

11、用万用表检查外围电路是否正常。

如正常,连接好开发板和外围电路。

请指导教师检查。

12、在老师检查后,将开发板与PC机连接(连接电源线,连接下载线)。

如果开发板第一次与PC机相连,计算机会发出询问,“发现新硬件,需要装驱动”。

操作过程请阅读教材P108 4.2.5节。

13、在菜单菜单Tools下选择programmer
打开编程窗口,观察箭头所指的信息。

如果显示“No Hardware”,点击左边的“Hardware Setup”,双击USB-Blaster。

如下图所示。

点击“Close”,关闭上面的窗口。

此时QUARTUSII的窗口应该为:
选中Program/Configure下方的框(出现勾)。

点击左边的“Start”,开始下载。

当显示100%时,下载成功。

观察彩灯的情况。

14、硬件测试。

改变彩灯显示控制电路CLK(从q[22]改为q[20]),重新全程编译,编译结束后再次下载,观察彩灯的情况。

如果彩灯的移动比未改时要快,说明硬件电路正常。

15、硬件测试。

改变彩灯的花案,重新全程编译,编译结束后再次下载,观察彩灯的情况。

如果彩灯的花案按照所修改的显示,说明硬件电路正常。

五、实验报告要求:
1.写出你实验时的芯片系列及芯片型号
2.实验箱连接在PC机的什么口上?
3.简要说明下载过程及在下载过程中遇到的问题
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY cai IS
PORT ( CLK: IN STD_LOGIC;
d: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END cai;
ARCHITECTURE ab of cai is
TYPE states IS (s0, s1, s2, s3,s4,s5,s6,s7);
SIGNAL st : states:=s0;
BEGIN
PROCESS(CLK,st)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
CASE ST IS
WHEN s0 => d<="00000001";st <=s1;
WHEN s1=> d<="00000010";st <=s2;
WHEN s2=> d<="00000100";st <=s3;
WHEN s3=> d<="00001000";st <=s4;
WHEN s4=> d<="00010000";st <=s5;
WHEN s5=> d<="00100000";st <=s6;
WHEN s6=> d<="01000000";st <=s7;
WHEN s7=>d<="10000000";st <=s0;
when others=> st<=s0;end case ;
end if;
end process;
end ab;。

相关文档
最新文档