vhdl流水灯课程设计报告
EDA流水灯论文(VHDL)

滨江学院课程论文(可编程器件原理与应用)题目基于VHDL语言的流水灯设计学生姓名王秋阳学号20082305047院系滨江学院专业电子与信息工程指导教师刘建成二零一零年十二月三十日一、任务:采用ALTERA 公司的EPM7128SLC84-10芯片,通过VHDL 语言设计一个流水灯电路。
流水灯样式必须大于3种,且可以通过按键调节显示样式;可以通过按键调节流水灯变化快慢;当前流水灯样式和变化速度能够通过数码管显示出来;(附加:具有按键声)二、设计框图(框图说明)1MHZ 周期信号经过2个100分频,得到100HZ ,再经过1个10分频得到10HZ 信号,传给速度控制模块,得到需要的速度周期信号,然后传给样式选择模块,样式选择模块直接输出彩灯样式;控制模块通过接受两个按键信号,同时控制速度控制模块和样式选择模块;译码扫描模块通过判断控制模块,扫描数码管显示当前彩灯样式和彩灯变化速度;按键信号通过延时模块输出按键发生信号。
速度按键 样式按键控制模块速度控制样式选择译码和扫描数码显示彩灯显示1000HZ 信号100HZ 信号蜂鸣器三、原理图(CPLD内部原理说明)从原理图中可以看到,一共有8种模块,D触发器的作用是对按钮进行消抖,除D触发器之外的7个模块功能及作用如下:f100和f10分别是100和10的分频器,speed模块的作用是对彩灯变化速度进行控制,而style_switch模块的作用是对彩灯样式进行调节。
Control 模块接收按键信号对样式和速度进行总的控制。
Show模块是对速度值和样式值进行译码并进行扫描数码管,将当前样式和速度状态显示出来。
Delay模块则是对按键声的延时。
四、各个模块设计(波形仿真)1.f100模块功能:100分频波形仿真:VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f100 is --100分频port(clk:in std_logic;sec:out std_logic);end entity f100;architecture getsec of f100 issignal secout : std_logic :='1';beginprocess(clk) isvariable count100: integer range 0 to 50;beginif clk'event and clk='1' thencount100:=count100+1;if count100=50 thensecout<=not secout;count100:=0;end if;end if;end process;sec<=secout;end architecture getsec;2.f10模块功能:10分频波形仿真:VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f10 is –-10分频port(clk:in std_logic;sec:out std_logic);end entity f10;architecture getsec of f10 issignal secout : std_logic :='1';beginprocess(clk) isvariable count10: integer range 0 to 5;beginif clk'event and clk='1' thencount10:=count10+1;if count10=5 thensecout<=not secout;count10:=0;end if;end if;end process;sec<=secout;end architecture getsec;3.speed模块功能:根据DATE输入端的数值大小,产生不同频率的周期信号,从而达到控制彩灯变化速率的目的。
vhdl课程设计实验报告

湖南科技大学信息与电气工程学院《课程设计报告》题目:电子技术课程设计报告专业:通信工程班级:一班姓名:何家乐学号: 1004040126指导教师:罗朝辉任务书题目《电子技术》课程设计时间安排课程设计时间为10天(2周)。
(1)调研、查资料1天。
(2)总体方案设计2 天。
(3)电路设计2天(画原理图,参数计算)。
(4)实验室完成相应电路的验证。
3天(5)撰写设计说明书 1 天。
(6)验收1 天。
目的:训练学生综合运用学过的电子技术原理的基础知识,独立进行查找资料、选择方案、设计电路、撰写报告,进一步加深对电子电路基本理论的理解,提高运用基本技能的能力,为今后的学习和工作打下坚实的基础。
要求:(1)能正确设计电路,画出线路图,分析电路原理。
(2)按时参加课程设计指导,定期汇报课程设计进展情况。
(3)广泛收集相关技术资料。
(4)独立思考,刻苦钻研,严禁抄袭。
(5)按时完成课程设计任务,认真、正确地书写课程设计报告。
(6)培养实事求是、严谨的工作态度和认真的工作作风。
总体方案实现:(1)明确设计任务,对所要设计的任务进行具体分析,充分了解电路性能、指标内容及要求。
(2)制定设计方案。
(3)迸行具体设计:单元电路的设计;参数计算;器件选择;绘制电路原理图。
(4)撰写课程设计报告(说明书):课程设计报告是对设计全过程的系统总结,也是培养综合科研素质的一个重要环节。
指导教师评语:评分等级:()指导教师签名:课程设计报告1.课题名称:RGB LED Control 原理图及PCB设计2.设计任务及要求⑴任务:完成RGB LED control 的设计,并画出原理图及其PCB设计。
⑵要求:①能正确设计电路,画出线路图,分析电路原理。
②按时参加课程设计指导,定期汇报课程设计进展情况。
③广泛收集相关技术资料。
④独立思考,刻苦钻研,严禁抄袭。
⑤按时完成课程设计任务,认真、正确地书写课程设计报告。
⑥培养实事求是、严谨的工作态度和认真的工作作风。
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,以此循环亮灯,直到仿真结束时间。
流水灯—电路实验报告

课程设计院(系)信息科学与工程学院专业班级姓名济南大学二〇一四年十二月二十九日课程设计任务书信息科学与工程学院专业学生姓名学号课程设计题目电路与数字逻辑课程设计课程设计内容与要求:一、设计题目(一)、流水灯电路综合组合电路和时序电路知识,设计一个流水灯电路,电路功能要求如下:(1)使用8个小灯,实现周期性流水。
(2)包含四种流水花样(至少四种)。
(3)每次流水间隔T。
(4)每个流水花样运行nT秒钟之后,自动切换到下一个花样,循环往复。
(5)流水花样使用数码管指示。
(二)、抢答器综合组合电路和时序电路知识,设计一个抢答器电路,电路功能要求如下:(1)八路抢答。
(2)整个工作过程分为出题、抢答、答题三个过程。
(3)电路初始状态为出题状态,出题完毕,主持人按钮可以将电路切换为抢答状态。
(4)在某人抢答成功后,自动进入答题状态,并开始10秒计时,计时结束自动停止计时。
主持人再次使用手动按钮可以将电路状态切换为出题状态。
(5)使用三个数码管,第一个数码管指示电路状态(0,1,2),第二个数码管指示抢答通道(0~7),第三个数码管用于指示答题时间(0~9)。
二、设计要求课程设计有两个实践性题目,要求软件仿真和电路焊接调试两个步骤,软件仿真20学时,电路焊接调试20学时,成绩步骤各占50%。
软件仿真:采用Multisim软件,要求学生能将两个电路全部仿真成功。
老师根据电路的完善程度和完成的先后顺序给出成绩。
电路焊接:在仿真结束之后,同学们可以任选一题,进行焊接调试。
实验室为每位同学提供一套实验耗材,包括电路板、集成电路芯片、导线等。
焊接调试完毕,老师检查并给出成绩后,设计作品可由作者自行带走。
在规定的时间内,调试未成功者,老师根据该学生的实际情况,给出成绩,但未完成的设计作品需要交还实验室。
设计开始日期2014年12 月26 日指导教师2014年12月29 日一、设计思路1.所需的引脚:电路图如下:2.用Multisim进行电路仿真,第一个74161用于产生16进制,第二个74161用于产生4进制,然后在7段数码管中显示出来流水灯的四种样式,74138是译码器,用于将第二个74161产生的四进制翻译为十进制,然后送到四个样式不同的74373中,74373的oc端是个输出门,当是低电平的时候处于高阻状态,因此同一时间只能有一个74373在工作,最后通过74194产生右移信号产生流水灯效果。
可编程逻辑器件应用流水灯VHDL设计报告

目录一、任务分工 (2)一、系统设计 (2)1.1模式自动切换 (2)1.2自动时钟分频 (2)1.3 模式与分频融合 (2)二、总体方案 (3)1模块化设计 (3)1.1假定输入时钟,计算变频时间 (3)1.2模式切换实时跟随输入时钟切换 (3)二、最终程序 (4)1分频模块 (4)2、模式控制模块 (5)三、仿真结果 (7)1、分频仿真 (7)2、流水灯仿真 (7)四、实验成果 (8)一、任务分工王定:变频模块设计裴振伟:模式切换王涛、贾晋生:实验仿真吴晓屹:ppt制作一、系统设计1.1模式自动切换对系统时钟输入进行计数:每个各上升沿来临时,led 灯都会做出相应的变化。
1.2自动时钟分频对系统输入时钟多段分频:本设计利用脉冲精准计时,以100HZ信号为例,周期为10ms。
每512个脉冲计数进行一次分频,时间大约500ms为一个节点。
进行了四次分频,分别为二分频、四分频、八分频、十六分频。
1.3 模式与分频融合变频模块与模式控制模块独立工作,其产生的原理图如下图1自变频流水灯原理图二、总体方案1模块化设计1.1假定输入时钟,计算变频时间1.2模式切换实时跟随输入时钟切换二、最终程序1分频模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;----------------------------------------------ENTITY FENPIN ISPORT(clk: IN STD_LOGIC;--时钟输入fenpinout: OUT STD_LOGIC);END ENTITY FENPIN;---------------------------------------------------ARCHITECTURE rtl OF FENPIN ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0); --定义一个四位的信号SIGNAL countout:STD_LOGIC_VECTOR(11 DOWNTO 0); --定义一个四位的信号]BEGINPROCESS(clk)BEGINIF(clk' event AND clk ='1') THEN --上升沿到来,100HZ,T=1/100S=0.01S=10ms countout<=countout+1;IF (count="1111") THEN --达到最大计数值count<="0000"; --置零ELSEcount<=count+1; --计数END IF;END IF;IF (countout>="100111111100") THENcountout<="000000000000";ELSIF (countout<="000111111111") THEN --512fenpinout<=count(0);ELSIF (countout>"000111111111") AND (countout<="001111111111") THEN fenpinout<=count(1);ELSIF (countout>"001111111111") AND (countout<="010*********") THENfenpinout<=count(2);ELSIF (countout>"010*********") AND (countout<="011111111101") THEN fenpinout<=count(3);END IF;END PROCESS;END rtl;2、模式控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LED_MODE ISPORT(CLK:IN STD_LOGIC;LED_OUT:OUT STD_LOGIC_VECTOR(11 DOWNTO 0));END ENTITY LED_MODE;ARCHITECTURE BEHAVE OF LED_MODE ISBEGINPROCESS(CLK) ISVARIABLE TEMP: INTEGER RANGE 0 TO 47;BEGINIF (CLK'EVENT AND CLK='1') THENtemp:=temp+1;CASE TEMP ISWHEN 0 => LED_OUT <="111111111110";WHEN 1=> LED_OUT <="111111111101";WHEN 2=> LED_OUT <="111111111011";WHEN 3=> LED_OUT <="111111110111";WHEN 4=> LED_OUT <="111111101111";WHEN 5=> LED_OUT <="111111011111";WHEN 6=> LED_OUT <="111110111111";WHEN 7=> LED_OUT <="111101111111";WHEN 8=> LED_OUT <="111011111111";WHEN 9=> LED_OUT <="110111111111";WHEN 10=> LED_OUT <="101111111111";WHEN 11=> LED_OUT <="011111111111";WHEN 12=> LED_OUT <="011111111111";WHEN 13=> LED_OUT <="101111111111";WHEN 14=> LED_OUT <="110111111111";WHEN 15=> LED_OUT <="111011111111";WHEN 16=> LED_OUT <="111101111111";WHEN 17=> LED_OUT <="111110111111";WHEN 18=> LED_OUT <="111111011111";WHEN 19=> LED_OUT <="111111101111";WHEN 20=> LED_OUT <="111111110111";WHEN 21=> LED_OUT <="111111111011";WHEN 22=> LED_OUT <="111111111101";WHEN 23=> LED_OUT <="111111111110";WHEN 24=> LED_OUT <="111111111111";WHEN 25=> LED_OUT <="011111111110";WHEN 26=> LED_OUT <="101111111101";WHEN 27=> LED_OUT <="110111111011";WHEN 28=> LED_OUT <="111011110111";WHEN 29=> LED_OUT <="111101101111";WHEN 30=> LED_OUT <="111110011111";WHEN 31=> LED_OUT <="111101101111";WHEN 32=> LED_OUT <="111011110111";WHEN 33=> LED_OUT <="110111111011";WHEN 34=> LED_OUT <="101111111101";WHEN 35=> LED_OUT <="011111111110";WHEN 36=> LED_OUT <="111111111111";WHEN 37=> LED_OUT<="001111111111";WHEN 38=> LED_OUT <="100111111111";WHEN 39=> LED_OUT <="110011111111";WHEN 40=> LED_OUT <="111001111111";WHEN 41=> LED_OUT <="111100111111";WHEN 42=> LED_OUT <="111110011111";WHEN 43=> LED_OUT <="111111001111";WHEN 44=> LED_OUT <="111111100111";WHEN 45=> LED_OUT <="111111110011";WHEN 46=> LED_OUT <="111111111001";WHEN 47=> LED_OUT <="111111111100";WHEN OTHERS=>LED_OUT<="111111111111";END CASE;END IF;END PROCESS;END BEHAVE;三、仿真结果1、分频仿真由于频率切换所需脉冲数量过多,不便于观测,未进行仿真。
流水灯的实验报告

流水灯的实验报告流水灯的实验报告引言:流水灯是一种常见的电子元件,它通过控制电流的流动,使灯光依次在一组灯泡之间流动,形成一种流水般的效果。
在本次实验中,我们将探索流水灯的工作原理,并通过自己动手搭建电路,观察流水灯的效果。
实验目的:1. 了解流水灯的工作原理;2. 学习使用电子元件搭建电路;3. 观察流水灯的效果。
实验材料:1. 流水灯电路板;2. 线缆;3. 电源;4. 灯泡。
实验步骤:1. 将流水灯电路板连接到电源上,确保电路板的正负极正确连接;2. 将灯泡依次连接到电路板上,确保灯泡的极性正确;3. 打开电源,观察流水灯的效果。
实验结果:当电源打开后,流水灯开始工作。
灯泡依次亮起,然后熄灭,再亮起下一盏灯泡,如此循环。
整个流水灯的效果就像水流般流动,非常美观。
实验分析:流水灯的实现原理是通过控制电流的流动方向和路径来实现的。
在流水灯电路板上,灯泡被连接成一条线,电流从一个灯泡流向下一个灯泡,依次循环。
每个灯泡都有一个开关,控制灯泡的亮灭。
当电流通过一个灯泡时,该灯泡亮起,当电流流向下一个灯泡时,前一个灯泡熄灭,下一个灯泡亮起,如此循环,形成流水灯的效果。
流水灯的原理与实际生活中的流水有些类似。
我们可以将每个灯泡看作是水流中的一个水滴,电流的流动就像水流一样,从一个水滴流向下一个水滴。
每个灯泡的亮灭就像水滴的存在和消失,整个流水灯的效果就像水流般流动。
流水灯不仅在实验中有应用,也在现实生活中有广泛的应用。
例如,在舞台演出中,流水灯常常被用来营造出动感和变幻的效果。
在夜店、酒吧等娱乐场所,流水灯也是常见的装饰元素之一。
流水灯的效果不仅美观,还能吸引人们的注意力,增加场景的氛围。
实验总结:通过本次实验,我们了解了流水灯的工作原理,并亲自搭建了一个流水灯电路。
实验结果显示,流水灯的效果非常美观,给人一种流动的感觉。
流水灯不仅在实验中有应用,也在现实生活中有广泛的应用。
通过这个实验,我们不仅学到了电子元件的使用方法,还培养了动手实践的能力,提高了对电路原理的理解。
流水灯课程设计报告

摘要流水彩灯控制器在我门日常生活中有重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。
本次设计的流水彩灯控制器是其中较简单的,但这是进行复杂设计的基础。
本次课程设计要设计一个流水彩灯控制器〔用8只发光二极管显示,至少三种工作方式〕。
首先要分析设计要求,从要实现至少三种工作方式入手推导出要使用的芯片。
可通过八位右移寄存器74LS164实现八个彩灯的向右移动,从它的右移输入端控制来实现它的流水彩灯的变化。
要控制流水彩灯的变化,可通过一个八位拨码开关,八选一数据选择器74LS151,模十六加法计数器74LS161来实现。
时钟信号由一个555产生,产生周期可由一个滑动变阻器控制。
而彩灯的变化可由拨码开关自行选择。
经实验验证,所设计的流水彩灯控制器能完成题目要求。
关键词 : 时钟脉冲;分频;移位寄存器;数据选择器;拨码开关;目录摘要 (1)1设计课题与要求 (3)1.1设计方案选择 (3)2 系统模块组成 (4)2.1系统组成框图 (4)2.2各模块的组成与功能分析 (4)3 单元电路设计与计算 (5)3.1时钟脉冲产生电路 (5)3.2单种码产生电路 (7)3.3拨码开关控制电路 (8)3.4输出电路设计 (10)4 整机电路设计 (12)整机电路工作原理 (10)5 组装调试 (13)5.1仿真过程 (15)6 总结 (15)结论 (16)参考文献 (16)附录1 流水彩灯控制器原理总图 (17)附录2 PCB总图 (17)附录 2 元器清单 (18)1 设计课题及要求〔一〕题目:流水彩灯控制器〔二〕基本要求:1、用8只发光二极管显示。
2、至少三种工作方式。
1.1 方案选择利用数字芯片实现。
用555做时钟信号,用模十六加法计数器74LS161的输出端的最高位Q3,模十六加法计数器74LS161的输出端的Q1Q2Q3接到八选一的数据选择器74LS151的选择控制端。
74LS151的八个输入端都接到八位拨码开关,由拨码开关和控制端控制输出端,输出端接到移位寄存器74LS164的输入端。
流水灯VHDL Done1

基于VHDL流水灯的设计电子信息科学与技术刘敏何磊成江波一、设计内容流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
要求采用可编程逻辑器件实现一个流水灯控制电路,12个LED灯能连续发出4种不同的流水显示形式。
彩灯控制器的第1种花样为彩灯按顺时针方向逐次点亮;第2种花样为彩灯按逆时针方向逐次点亮,然后全灭全亮;第3种花样为彩灯两边同时亮1、2、3、4、5、6个逐次向中间移动再散开;第4种花样为彩灯连续交叉闪烁。
多个花样自动变换,循环往复。
二、设计方案彩灯是由FPGA板上的LED灯代替,有以下4种闪烁效果1.彩灯按顺时针方向逐次点亮。
2.彩灯按逆时针方向逐次点亮,然后全灭全亮。
3.彩灯两边同时亮1、2、3、4、5、6个逐次向中间移动再散开。
4.彩灯连续交叉闪烁。
本控制电路采用VHDL语言设计。
运用自顶而下的设计思想,按功能逐层分割实现层次化设计。
根据多路彩灯控制器的设计原理,分别对应彩灯的四种变化模式、利用VHDL语言实现该功能.三、系统框图四、流水灯设计程序library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_unsigned.all;entity led1 isport(sysclk: in std_logic;dout: out std_logic_vector(11 downto 0) );end led1;architecture jgt of led1 issignal cnt : std_logic_vector ( 7 downto 0);--variable count:integer RANGE 0 TO 7;signal count : std_logic_vector(5 DOWNTO 0);beginprocess(sysclk)beginif ( sysclk'event and sysclk = '1') thencnt <= cnt + 1;if (cnt = "11110111") thencnt <= "00000000" ;count <=count+1;end if ;end if;end process;process (count)begincase count iswhen "000000" =>dout <= "111111111110";when "000001" =>dout <= "111111111101";when "000010" =>dout <= "111111111011";when "000011" =>dout <= "111111110111";when "000100" =>dout <= "111111101111";when "000101" =>dout <= "111111011111";when "000110" =>dout <= "111110111111";when "000111" =>dout <= "111101111111";when "001000" =>dout <= "111011111111";when "001001" =>dout <= "110111111111";when "001010" =>dout <= "101111111111";when "001011" =>dout <= "011111111111";when "001100" =>dout <= "101111111111";when "001101" =>dout <= "110111111111";when "001110" =>dout <= "111011111111";when "010000" =>dout <= "111110111111";when "010001" =>dout <= "111111011111";when "010010" =>dout <= "111111101111";when "010011" =>dout <= "111111110111";when "010100" =>dout <= "111111111011";when "010101" =>dout <= "111111111101";when "010110" =>dout <= "111111111110";when "010111" =>dout <= "111111111111";when "011000" =>dout <= "000000000000";when "011001" =>dout <= "011111111110";when "011010" =>dout <= "101111111101";when "011011" =>dout <= "110111111011";when "011100" =>dout <= "111011110111";when "011101" =>dout <= "111101101111";when "011110" =>dout <= "111110011111";when "011111" =>dout <= "111101101111";when "100000" =>dout <= "111011110111";when "100001" =>dout <= "110111111011";when "100010" =>dout <= "101111111101";when "100011" =>dout <= "011111111110";when "100100" =>dout <= "001111111100";when "100101" =>dout <= "110011110011";when "100110" =>dout <= "111100001111";when "100111" =>dout <= "110011110011";when "101000" =>dout <= "001111111100";when "101001" =>dout <= "000111111000";when "101010" =>dout <= "111000000111";when "101011" =>dout <= "000111111000";when "101100" =>dout <= "000011110000";when "101101" =>dout <= "111100001111";when "101110" =>dout <= "000001100000";when "101111" =>dout <= "000000111111";when "110000" =>dout <= "010*********";when "110001" =>dout <= "101010101010";when "110010" =>dout <= "010*********"; when "110011" =>dout <= "101010101010"; when "110100" =>dout <= "010*********"; when "110101" =>dout <= "101010101010"; when "110110" =>dout <= "010*********";when "110111" =>dout <= "101010101010";when "111000" =>dout <= "010*********"; when "111001" =>dout <= "101010101010"; when "111010" =>dout <= "010*********";when "111100" =>dout <= "010*********";when "111101" =>dout <= "101010101010";when "111110" =>dout <= "010*********";when "111111" =>dout <= "101010101010";when others=>null;end case;end process;end jgt;五、系统仿真与调试1.仿真波形图通过QuartusII软件,我们进行了仿真,其仿真波形如下图:图一:仿真波形图由设计要求可知,本设计要求采用可编程逻辑器件实现一个流水灯控制电路,12个LED 灯能连续发出4种不同的流水显示形式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
院系:姓名:学号:课程设计名称:指导老师:时间:摘要VHDL的特点应用VHDL进行系统设计,有以下几方面的特点。
(一)功能强大VHDL具有功能强大的语言结构。
它可以用明确的代码描述复杂的控制逻辑设计。
并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。
VHDL是一种设计、仿真和综合的标准硬件描述语言。
(二)可移植性VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。
它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。
此外,通过更换库再重新综合很容易移植为ASIC设计。
(三)独立性VHDL的硬件描述与具体的工艺技术和硬件结构无关。
设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。
程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。
(四)可操作性由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。
(五)灵活性VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。
使其在任何大系统的设计中,随时可对设计进行仿真模拟。
所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。
VHDL的设计结构VHDL描述数字电路系统设计的行为、功能、输入和输出。
它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。
VHDL将一个设计称为一个实体Entity(元件、电路或者系统),并且将它分成外部的可见部分(实体名、连接)和内部的隐藏部分(实体算法、实现)。
当定义了一个设计的实体之后,其他实体可以利用该实体,也可以开发一个实体库。
所以,内部和外部的概念对系统设计的VHDL是十分重要的。
外部的实体名或连接由实体声明Entity来描述。
而内部的实体算法或实现则由结构体Architecture来描述。
结构体可以包含相连的多个进程process或者组建component等其他并行结构。
需要说明的是,它们在硬件中都是并行运行的。
VHDL的设计步骤采用VHDL的系统设计,一般有以下6个步骤。
1)要求的功能模块划分;2)VHDL的设计描述(设计输入);3)代码仿真模拟(前仿真);4)计综合、优化和布局布线;5)布局布线后的仿真模拟(后仿真);6)设计的实现(下载到目标器件)。
[实验说明]该流水灯除了输入有:时钟端、使能端和清零端,输出为8个led指示灯。
清零端为低电平时回到最初始状态,输出为O1灯亮,为高电平时无作用;使能端低电平时流水灯停止,高电平时流水灯继续流动;时钟端为系统时钟输入,要求8个led指示灯每秒变化一次,向右流动,变化顺序依次为O1灯亮→O2灯亮→O3灯亮→ O4灯亮→ O5灯亮→ O6灯亮→ O7灯亮→返回O1。
电路逻辑功能实现后,可将该逻辑功能下载到CPLD中。
注意选择:清零端选1脚,使能端选拨码开关,时钟端选83脚、输出线8根(接发光二极管指示灯);测试时根据输入信[实验要求]1用VHDL语言实现流水灯2设计仿真文件,进行软件验证3通过下载线下载到实验板上进行验证4灯有两种模式每种模式有四种变化。
5第一种模式下灯的花色循环变化不能控制,第二种情况下花色可以控制并且变化间有声音。
流水灯设计1、分频模块的VHDL设计:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity light isPORT( CLK_IN: IN STD_LOGIC;--输入时钟信号CLK_OUT: OUT STD_LOGIC;--分频后的输出时钟信号);end light;architecture Behavioral of light issignalcont: STD_logic_vector(1 downto 0);beginprocess(CLK_IN)BEGINIF RISING_EDGE(CLK_IN) THENIF CONT="11" THENCONT<="00";CLK_OUT<='1';ELSE CONT<=CONT+'1';CLK_OUT='0';END IF;END IF;END PROCESS;end Behavioral;2、流水灯从左至右连续显示library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity light2 isPORT(CLK :IN STD_LOGIC;--分频后的时钟信号EN :IN STD_LOGIC;--使能控制信号M :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--控制8个灯的输出信号 );end light2;architecture Behavioral of light2 isSIGNAL SEL : STD_LOGIC_VECTOR(2 DOWNTO 0);beginPROCESS(EN,CLK,SEL)BEGINIF RISING_EDGE(CLK) THENIF EN='1' THENIF SEL="111" THENSEL<="000";ELSESEL<=SEL+'1';END IF;END IF;END IF;CASE SEL ISWHEN "000" =>M<="10000000";WHEN "001" =>M<="01000000";WHEN "010" =>M<="00100000";WHEN "011" => M<="00010000";WHEN "100" => M<="00001000";WHEN "101" =>M<="00000100";WHEN "110" =>M<="00000010";WHEN "111" => M<="00000001";WHEN OTHERS =>NULL;END CASE;END PROCESS;end Behavioral;3、流水灯从右到左连续显示:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity light3 isPORT(CLK :IN STD_LOGIC;--分频后的时钟信号EN :IN STD_LOGIC;--使能控制信号N :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--控制8个灯的输出信号 );end light3;architecture Behavioral of light3 isSIGNAL SEL : STD_LOGIC_VECTOR(2 DOWNTO 0);beginPROCESS(EN,CLK,SEL)BEGINIF RISING_EDGE(CLK) THENIF EN='1' THENIF SEL="111" THENSEL<="000";SEL<=SEL+'1';END IF;END IF;END IF;CASE SEL ISWHEN "000" =>N<="00000001";WHEN "001" =>N<="00000010";WHEN "010" =>N<="00000100";WHEN "011" =>N<="00001000";WHEN "100" =>N<="00010000";WHEN "101" =>N<="00100000";WHEN "110" =>N<="01000000";WHEN "111" =>N<="10000000";WHEN OTHERS =>NULL;END CASE;END PROCESS;end Behavioral;4、流水灯从两边向中间显示,然后由中间向两边显示:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity light4 isPORT(CLK :IN STD_LOGIC;--分频后的时钟信号EN :IN STD_LOGIC;--使能控制信号L :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--控制8个灯的输出信号 );end light4;architecture Behavioral of light4 isSIGNAL SEL : STD_LOGIC_VECTOR(2 DOWNTO 0);beginPROCESS(EN,CLK,SEL)BEGINIF RISING_EDGE(CLK) THENIF EN='1' THENIF SEL="111" THENSEL<="000";ELSESEL<=SEL+'1';END IF;END IF;CASE SEL ISWHEN "000" =>L<="10000001";WHEN "001" =>L<="01000010";WHEN "010" =>L<="00100100";WHEN "011" =>L<="00011000";WHEN "100" =>L<="00100100";WHEN "101" =>L<="01000010";WHEN "110" =>L<="10000001";WHEN "111" =>L<="11111111";WHEN OTHERS =>NULL;END CASE;END PROCESS;end Behavioral;5、流水灯从左至右每次显示两个灯:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity light5 isPORT(CLK :IN STD_LOGIC;--分频后的时钟信号EN :IN STD_LOGIC;--使能控制信号Q :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--控制8个灯的输出信号 );end light5;architecture Behavioral of light5 isSIGNAL SEL : STD_LOGIC_VECTOR(2 DOWNTO 0);beginPROCESS(EN,CLK,SEL)BEGINIF RISING_EDGE(CLK) THENIF EN='1' THENIF SEL="111" THENSEL<="000";ELSESEL<=SEL+'1';END IF;END IF;END IF;CASE SEL ISWHEN "000" => Q <="10100000";WHEN "001" => Q <="01010000";WHEN "010" => Q <="00101000";WHEN "011" => Q <="00010100";WHEN "100" => Q <="00001010";WHEN "101" => Q <="00000101";WHEN "110" => Q <="00001010";WHEN "111" => Q <="00001010";WHEN OTHERS =>NULL;END CASE;END PROCESS;end Behavioral;6、扫描模块程序libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all; useieee.std_logic_arith.all;entity SELTIME isport(daout:outstd_logic_vector(7downto 0); sel:instd_logic_vector(1downto 0));end SELTIME;architecture fun of SELTIME is signalcount:std_logic_vector(1downto 0); beginsel<=count;process(sel)begincase count iswhen"00"=>daout<=M;when"01"=>daout<=N;when"10"=>daout<=L;when"11"=>daout<=Q;when others =>null;end case;end process;end fun;。