VHDL花样彩灯_实验报告
vhdl课程设计报告

一、设计目的本课程设计的目的是熟练掌握相关软件的使用和操作。
能对VHD1语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。
在成功掌握软件操作基础上,将所数字电路的基础课知识与VHD1语言的应用型知识结合起来并与实际设计,操作联系起来,即“理论联系实际:深入了解VHD1语言的作用与价值,对用硬件语言设计一个电路系统开始具备一个较完整的思路与较专业的经验。
对EDA技术有初步的认识,并开始对EDA技术的开发创新有初步的理解。
二、设计内容及操作1、设计循环彩灯控制器1.1设计内容设计一个循环彩灯控制器,该控制器控制红,绿,黄三个发光管循环点亮。
要求红发光管亮3秒,绿发光管亮2秒,黄发光管亮1秒。
1.2程序设计1IBRARYIEEE;USEIEEE.STD_10GIC_1164.A11;USEIEEE.STD_1OGIC_UNSIGNED.A11;ENTITYcaideng_2ISPORT(e1k:INSTD_1OGIC;red,green,ye11ow:OUTSTD1OGIC);ENDENTITYCaideng_2;ARCHITECTUREexamp1eOFcaideng_2ISSIGNA1dout:STD_1OGIC_VECTOR(2DoWNTO0);SIGNA1m:STD_10GIC_VECT0R(2DOWNTO0);BEGINred<=dout(2);green<=dout(1);ye11ow<=dout(0);PROCESS(e1k)ISBEGINIF(c1k,EVENTANDC1k=T')THENIF(In="110")THENm<="001";E1SEm<=m+1;ENDIF;CASEmISWHEN"001"=〉dout<=〃100〃;WHEN"010"=>dout<=T00";WHEN,/0ir=>dout<="100";WHEN"100"=>dout<="010";WHEN"101"=>dout<="010";WHEN"110"=>dout<="001";WHENOTHERS=>dout<="000";ENDCASE;ENDIF;ENDPROCESS;ENDARCHITECTURE;1.3仿真波形图14波形图分析在仿真时已经设置好开始时间和结束时间,根据以上的波形图可知,当e1k 信号处于高电平(高低电平可以根据自己所设计的情况自己定义),红发光管最先亮灯(高电平表示亮灯),时间为3s,3s之后绿发光管开始亮灯2s,2s结束黄发光管亮1s,以此循环亮灯,直到仿真结束时间。
彩灯控制电路设计与实现(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.编写这个程序时,很自然地想到用一个输入信号控制两种模式的切换,但把这个输入放在哪里,如何放,开始出现了几种想法。
基于VHDL实现多路彩灯控制器设计应用

基于VHDL实现多路彩灯控制器设计应用关键词:VHDL 彩灯控制07通信工程本科班沈治文摘要:设计一个彩灯控制程序器。
可以实现四种花型循环变化,有复位开关。
整个系统共有三个输入信号CLK,RST,Sel,八个输出信号控制八个彩灯。
时钟信号CLK脉冲由系统的晶振产生。
各种不同花样彩灯的变换由Sel控制.此彩灯控制系统设定有四种花样变化,这四种花样可以进行切换,四种花样分别为:(1) 彩灯从左到右逐次闪亮。
(2)彩灯从左向右逐次点亮,且亮后不熄灭。
(3) 彩灯两边同时亮两个,然后逐次向中间点亮。
(4) 全部彩灯亮与熄灭交替。
Abstract: The design of a control program Lantern device. Four kinds of flowers can be achieved circulation change, reset switch. The whole system has three input signals CLK, RST, Sel, 8 output signal control 8 lights. The clock signal CLK pulses generated by the system of the crystal. Lanterns of different patterns of transformation controlled by Sel. The lights control system configuration there are four patterns change, four kinds of patterns can be switched, four kinds of patterns are as follows:(1) successive flashing lights from left to right.(2) successive lantern lit from left to right, and the light is not extinguished after.(3) The two bright lights on both sides at the same time, and then successively to the center light.(4) All lights turn bright and quenching在日常生活中,为了增加聚会或是过节氛围,经常要使用到彩灯循环点亮。
vhdl实验报告

vhdl实验报告VHDL实验报告引言:VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和仿真。
本篇实验报告将介绍我在VHDL实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。
一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。
通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。
二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。
然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。
在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。
在学习了VHDL的基础知识后,我们开始进行实验设计。
我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。
首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。
然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。
接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。
三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。
在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。
在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。
实验二 彩灯实验

实验二彩灯实验一、实验项目彩灯控制实验:利用开发实验平台上的8 个LED 实现常见彩灯实验。
二、实验目的1、学习QuatusII开发软件的基本操作。
2、熟悉教学实验板的使用。
3、初步掌握VHDL语言的设计、输入、编译、仿真和调试过程。
4、掌握USB-BLASTER下载工具的安装、以及程序下载方法。
三、实验内容1、首先编译下载给定的VHDL硬件描述语言编写的彩灯控制示例程序,仔细观察在实验板上的现象。
2、用VHDL语言编辑彩灯控制程序,通过按键控制开发实验平台上的8个LED灯的点亮顺序:(1)按键可选择核心板上的按键,或EDA主板上矩阵键盘作为按键,或DKA系列按键;(2)通过一个按键控制8个LED灯从左向右依次循环点亮;(3)通过一个按键控制8个LED灯从右向左依次循环点亮;(4)通过一个按键控制8个LED灯从中间向两边依次循环点亮;(5)通过一个按键控制8个LED灯从两边向中间依次循环点亮;(6)通过一个按键控制8个LED灯全部点亮;(7)通过一个按键控制8个LED灯全部熄灭。
(8)以上共使用了六个按键控制六种点亮方式3、扩展内容:能够设置8个LED灯的点亮频率(通过时钟、分频器实现)。
4、使用三个按键控制LED点亮的六种方式。
5、在QuatusII平台上进行波形仿真,保存一组通过按键控制8个LED灯从中间向两边依次循环点亮的仿真波形图。
6、描述在实验板上观察到的现象。
四、实验仪器计算机、USB-BLASTER下载线、数字系统实验箱、5V稳压电源。
五、实验原理1、EDA主板上8个LED灯的电路连接如图1所示。
8个LED采用74LS244进行隔离驱动,当FPGA对应I/O口为高电平时,相应的LED灯点亮;为低电平时,灯熄灭。
2、表1是对应的FPGA映射管脚表,即编译通过后,进行器件管脚分配时必须按照相应的管脚号进行分配,否则就无法进行硬件验证测试。
图1 8个LED灯的电路连接图表1 LED灯对应的FPGA映射管脚表器件名网络名FPGA映射管脚LED-0SD0165LED-1SD1166LED-2SD2167LED-3SD3168LED-4SD4169LED-5SD5170LED-6SD6173LED-7SD71743、FPGA时钟连接电路及管脚分配分别如图2和表2所示。
VHDL实验报告

实验四————LED数码管显示数字实验内容:在四个七段LED数码管上显示数字“1234”。
实验原理:实现LED数码管数字显示电路的输入和输出端口控制信号如图所示clkLed_bit reset led_seg输入和输出端口信号图中clk信号为50MHz时钟信号。
reset信号为复位按键输入信号,当reset按键按下时,reset信号为低电平。
输出信号led_bit为驱动LED数码管的位码信号,因为有四个LED 数码管,需要四根信号线,控制四个LED数码管中的哪一个LED数码管显示。
输出信号led_seg为驱动LED数码管的段码信号,共有八根信号线,分别是a,b,c,d,e,f,g,dp段,输出信号led_seg能够控制一个LED数码管中的哪一段显示。
四个七段LED数码管的排列如下图所示:四个LED数码管LED数码管采用共阳极发光二极管,如下图所示,需要点亮数码管中的某一段时,应该在对应段的段码信号输出低电平。
共阳极LED数码管由于每个LED数码管有八个发光二极管,八个发光二极管同时导通时需要提供比较大的电流,需要给共阳极加驱动电路,如下图所示,当需要某一LED数码管显示数字时,就给该行的控制信号led_bit(i)提供一个低电平信号。
共阳极LED数码管的阳极驱动电路原理图实验内容:本次实验采用了两个进程:1.scanclk_get:获取扫描时序控制信号2.led_selest_get:选择数码管并显示数字流程图:Clknum scan_cntr reset led_bit<3:0>源代码:library IEEE;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity EXP4_M isport(clk,rst:in std_logic;led_bit:out std_logic_vector(3 downto 0); led_seg:out std_logic_vector(7 downto 0)); end EXP4_M;进程scanclk_get 产生LED 数码管扫描时序控制电路 Led_select_d isplay 进程选择要显示的数据和对应的数码管 七段译码器architecture Behavioral of EXP4_M issignal scanclk:std_logic_vector(17 downto 0);beginscanclk_get:process(clk,rst)beginif rst='0' thenscanclk<=(others=>'0');elsif rising_edge(clk) thenscanclk<=scanclk+1;end if;end process scanclk_get;led_select_display:process(scanclk)begincase scanclk(17 downto 16) iswhen "00" =>led_bit<="1110";led_seg<="10011111" ;when "01"=>led_bit<="1101";led_seg<="00100101" ;when "10"=>led_bit<="1011";led_seg<="00001101" ;when "11"=>led_bit<="0111";led_seg<="10011001" ;when others =>null;end case;end process led_select_display;end Behavioral;UCF文件:net "clk" loc =Y11;net "rst" loc =J3;net "led_bit(0)" loc =M5;net "led_bit(1)" loc =M4;net "led_bit(2)" loc =M3;net "led_bit(3)" loc =M2;net "led_seg(0)" loc =R4;net "led_seg(1)" loc =T3;net "led_seg(2)" loc =T2;net "led_seg(3)" loc =T1;net "led_seg(4)" loc =N4;net "led_seg(5)" loc =N3;net "led_seg(6)" loc =N2;net "led_seg(7)" loc =N1;实验结果:实验箱数码管依次显示“1234”。
彩灯实验报告

实验报告课程名称可编程逻辑器件实验项目名称彩灯学生班级学生姓名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时,灯会按照所编写程序的要求运作。
VHDL花样彩灯控制器设计

《EDA技术》课程实验报告学生姓名:所在班级:电信1001指导教师:记分及评价:一、实验名称实验8:花样彩灯控制器的设计二、任务及要求【基本部分】5分1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,设计一花样彩灯控制器,实现对实验箱8个LED发光二极管的显示控制,至少4种以上的花样。
2、实验箱上选择恰当的模式进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。
【发挥部分】5分实现不同的花样播放不同的背景音乐的功能。
三、实验程序【基本部分】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CECAIDENG ISPORT(CLK,RST:IN STD_LOGIC;SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END CECAIDENG;ARCHITECTURE COLOR OF CECAIDENG ISTYPE STATE_1 IS(S0,S1,S2,S3,S4,S5,S6,S7);SIGNAL STATE_2:STATE_1;BEGINPR_1:PROCESS(CLK,RST)BEGINIF RST='1'THEN STATE_2<=S0;ELSIF(CLK'EVENT AND CLK='1')THENCASE STATE_2 ISWHEN S0=> STATE_2 <=S1;WHEN S1=> STATE_2 <=S2;WHEN S2=> STATE_2 <=S3;WHEN S3=> STATE_2 <=S4;WHEN S4=> STATE_2 <=S5;WHEN S5=> STATE_2 <=S6;WHEN S6=> STATE_2 <=S7;WHEN S7=> STATE_2 <=S0;END CASE;END IF;END PROCESS PR_1;PR_2:PROCESS(SEL,STATE_2)BEGINIF SEL="000"THEN CASE STATE_2 ISWHEN S0=> Y <="10000000";WHEN S1=> Y <="01000000";WHEN S2=> Y <="00100000";WHEN S3=> Y <="00010000";WHEN S4=> Y <="00001000";WHEN S5=> Y <="00000100";WHEN S6=> Y <="00000010";WHEN S7=> Y <="00000001";END CASE;ELSIF SEL="001" THENCASE STATE_2 ISWHEN S0=> Y <="10000000";WHEN S1=> Y <="11000000";WHEN S2=> Y <="11100000";WHEN S3=> Y <="11110000";WHEN S4=> Y <="11111000";WHEN S5=> Y <="11111100";WHEN S6=> Y <="11111110";WHEN S7=> Y <="11111111";END CASE;ELSIF SEL="010" THENCASE STATE_2 ISWHEN S0=> Y <="10000001";WHEN S1=> Y <="01000010";WHEN S2=> Y <="00100100";WHEN S3=> Y <="00011000";WHEN S4=> Y <="00100100";WHEN S5=> Y <="01000010";WHEN S6=> Y <="10000001";WHEN S7=> Y <="11111111";END CASE;ELSIF SEL="011" THENWHEN S0=> Y <="00000000"; WHEN S1=> Y <="11111111"; WHEN S2=> Y <="00000000"; WHEN S3=> Y <="11111111"; WHEN S4=> Y <="00000000"; WHEN S5=> Y <="11111111"; WHEN S6=> Y <="00000000"; WHEN S7=> Y <="11111111"; END CASE;ELSIF SEL="100" THENCASE STATE_2 ISWHEN S0=> Y <="10000001"; WHEN S1=> Y <="11000011"; WHEN S2=> Y <="11100111"; WHEN S3=> Y <="11111111"; WHEN S4=> Y <="00100100"; WHEN S5=> Y <="11000011"; WHEN S6=> Y <="10000001"; WHEN S7=> Y <="11111111"; END CASE;ELSIF SEL="101" THENCASE STATE_2 ISWHEN S0=> Y <="10000000"; WHEN S1=> Y <="11000000"; WHEN S2=> Y <="11100000"; WHEN S3=> Y <="11110000"; WHEN S4=> Y <="00000001"; WHEN S5=> Y <="00000011"; WHEN S6=> Y <="00000111"; WHEN S7=> Y <="00001111"; END CASE;ELSIF SEL="110" THENCASE STATE_2 ISWHEN S0=> Y <="11110000"; WHEN S1=> Y <="00001111"; WHEN S2=> Y <="00000000"; WHEN S3=> Y <="11111111"; WHEN S4=> Y <="00001111"; WHEN S5=> Y <="11110000"; WHEN S6=> Y <="11011011"; WHEN S7=> Y <="11111111"; END CASE;ELSIF SEL="111" THENWHEN S0=> Y <="01010101";WHEN S1=> Y <="10101010";WHEN S2=> Y <="00000000";WHEN S3=> Y <="11111111";WHEN S4=> Y <="00100100";WHEN S5=> Y <="11011011";WHEN S6=> Y <="00001111";WHEN S7=> Y <="11111111";END CASE;END IF;END PROCESS PR_2;END COLOR;设计思路:这次实验是采用文本输入设计方法,通过编写VHDL语言程序,设计一花样彩灯控制器,实现对实验箱8个LED发光二极管的显示控制,因为要设计出不同的花样,所以要利用典型摩尔状态机来实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
aj:in std_logic;-------------频率选择 30
Light:out std_logic_vector(7 downto 0);------ 点 阵 列 -----
(82-73)
hang:out std_logic_vector(7 downto 0) -------------(90-83)
if cnt1=20000 then cnt1:=0; if cnt2=10000 then cnt2:=0; clk_1s<=not clk_1s; else cnt2:=cnt2+1; end if; else cnt1:=cnt1+1;
end if; end if; end process; process(rst,clk_hz) begin
二、设计方案: (1)、采用状态机的方式,用点阵在硬件上实现各种花形彩
灯,并使用复位键 (2)、用 0.25s 和 0.5s 两种频率的选择,并采用按键控制输出 (3)、对于点阵的扫描是采用了 1s
三、 程序语言:
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ห้องสมุดไป่ตู้
USE IEEE.std_logic_ARITH.ALL;
when others=>light<="00000000"; end case; when s3=> if cnt4="100" then
cnt4<="000"; else cnt4<= cnt4+1; end if; case cnt4 is when "000"=>light<="01110111"; when "001"=>light<="00110011"; when "010"=>light<="00010001"; when "011"=>light<="00000000"; when "100"=>light<="11111111"; when others=>light<="00000000"; end case; when s4=> if cnt5="1111" then cnt5<="0000"; else cnt5<=cnt5+1; end if; case cnt5 is when "0000"=>light<="10000000";
if(rst='0')then state<=s0;
elsif(clk_1s'EVENT AND clk_1s='1')then case state is when s0 => state <=s1; when s1 => state <=s2; when s2 => state <=s3;
when s3 => state <=s4; when s4 => state <=s0; end case; end if; end process; ---------------------------------------------------------process(state,clk_hz) begin if rst='0' then light<="00000000"; else if(clk_hz'EVENT AND clk_hz='1')then case state is when s0=> if cnt1="1111" then cnt1<="0000"; else cnt1<= cnt1+1; end if; case cnt1 is when "0000"=>light<="01111111"; when "0001"=>light<="00111111";
USE IEEE.std_logic_UNSIGNED.ALL;
----------------------------------------------------
ENTITY caideng IS
port
(
clk,rst:INstd_logic;
---------------12--------------
BEGIN
hang<="11111111";
--------------------频率选择-----------------
process(clk)
variable cnt1:integer range 0 to 6250000;------------4hz
即 0.25s
variable
cnt2:integer
cnt3<="000"; else cnt3<=cnt3+1; end if; case cnt3 is when "000"=>light<="01110111"; when "001"=>light<="00110011"; when "010"=>light<="00010001"; when "011"=>light<="00000000"; when "100"=>light<="10000001"; when "101"=>light<="11000011"; when "110"=>light<="11100111"; when "111"=>light<="11111111";
if cnt2=12500000 then cnt2:=0; clk_hz <=not clk_hz; else cnt2:=cnt2+1; end if; when others =>null; end case; end if; end process; --------------------------------------------------------process(clk) variable cnt1: integer range 0 to 20000; variable cnt2: integer range 0 to 10000; begin if clk'event and clk='1' then
);
end caideng;
architecture one of caideng is
type states is(s0,s1,s2,s3,s4);------表示状态------
signal state: states;
signal clk_hz,clk_1s:std_logic:='0';
signal cnt1:std_logic_vector(3 downto 0):="0000";
when "001"=>light<="11000011"; when "010"=>light<="10000001"; when "011"=>light<="00000000"; when "100"=>light<="00000000"; when "101"=>light<="10000001"; when "110"=>light<="11000011"; when others=>light<="11100111"; end case; when s2=> if cnt3="111" then
signal cnt2:std_logic_vector(2 downto 0):="000";
signal cnt3:std_logic_vector(2 downto 0):="000";
signal cnt4:std_logic_vector(2 downto 0):="000";
signal cnt5:std_logic_vector(3 downto 0):="0000";
可编程逻辑器件应用
项 目 报 告 书
项目名称: 指导老师: 姓 名: 学 号: 班 级:
花样彩灯 龚兰芳 林晓新 100212126 10 电子 1 班
广东水利电力职业技术学院
一、设计要求-------------------------------------------------------------------------------二、设计目的-------------------------------------------------------------------------------三、设计方案-------------------------------------------------------------------------------四、设计程序--------------------------------------------------------------------------------五、管脚分配--------------------------------------------------------------------------------六、硬件下载实现现象描述-----------------------------------------七、体会、对设计工作的总结与展-------------------------------------------