EDA实验流水灯控制
EDA技术与应用实践案例6 带数码显示的流水灯

案例6带数码显示的流水灯6.1 预习内容(1)流水灯的实现方式:单片机,那么采用FPGA技术能否实现呢?(2)实验开发系统只能提供20MHZ的时钟频率,能否用此时钟来控制流水灯?肉眼能否观察到实验现象?怎么解决?6.2 案例目的熟悉在实际硬件条件下如何利用QuartusⅡ设计出简单的实用电路。
6.3 案例环境LED流水灯又叫跑马灯,是最基础的时序逻辑,使用VHDL语言设计,循环点亮每个LED。
6.4 案例原理本实验使用分频器,因为实验板上的时钟为25M,如果不分频,人眼不可能观察到LED循环点亮。
图1 流水灯原理框图6.5 案例步骤(1)首先用代码设计能满足肉眼分辨要求的分频器。
(2)设计显示部分电路,当流水灯跑完一周后数码管计数字加一。
(3)把设计的电路部分都创建为一个符号,在顶层原理图中调用以组成电路系统。
(4)完成电路的引脚锁定,分别将各输入引脚锁定到按键或者跳线上,时钟输入端锁定在开发试验系统的时钟输出引脚上,将计数的输出通过译码电路(CPLD)连接到7段数码管上进行显示。
6.6 案例报告(1)详细叙述流水灯的设计流程;给出原理图及其对应的仿真波形图;给出电路的时序分析情况;最后给出硬件测试流程和结果。
(2)需要思考总结的问题:实际实验中往往要用到频率很低的时钟(比如1Hz,10Hz),这时往往要用到20M的分频,考虑如何用比较简练的形式写出高效的程序。
6.7 附录6.7.1 设计代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNTFEN ISPORT (CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR( 30 DOWNTO 0);COUT: OUT STD_LOGIC);END CNTFEN;ARCHITECTURE behav OF CNTFEN ISBEGINPROCESS(CLK,RST,EN)VARIABLE CQI: STD_LOGIC_VECTOR(30 DOWNTO 0);BEGINIF RST='1'THEN CQI:=(OTHERS =>'0');--计数器异步复位ELSIF CLK'EVENT AND CLK='1'THEN --检测时钟上升沿IF EN='1'THEN --检测是否允许计数(同步使能) IF CQI<9999999 THEN CQI := CQI + 1;--允许计数,ELSE CQI:=(OTHERS =>'0');--检测是否小于9 大于9,计数值清零END IF;END IF;END IF;IF CQI=9999999 THEN COUT <='1';--计数大于9999999,输出进位信号ELSE COUT<='0';END IF;CQ <= CQI;--将计数值向端口输出END PROCESS;END behav;分频器VHDL描述图2 顶层电路图6.7.2 仿真结果。
eda流水灯课程设计

eda流水灯课程设计一、课程目标知识目标:1. 理解EDA(电子设计自动化)的基本概念,掌握流水灯的设计原理;2. 学习并掌握流水灯电路的组成、工作原理及编程方法;3. 了解数字电路基础知识,如逻辑门、触发器等,并能将其应用于流水灯设计。
技能目标:1. 学会使用EDA软件(如Multisim、Protel等)进行电路设计和仿真;2. 学会编写简单的C语言程序,实现流水灯的控制;3. 培养动手实践能力,能够独立完成流水灯的制作与调试。
情感态度价值观目标:1. 培养学生对电子设计的兴趣和热情,激发创新意识;2. 培养学生的团队合作精神,学会在团队中沟通与协作;3. 培养学生严谨的科学态度,注重实践,敢于面对困难和挑战。
课程性质:本课程属于电子技术实践课程,结合理论知识,强调动手实践,培养学生的实际操作能力。
学生特点:本课程面向初中或高中学生,学生对电子技术有一定的基础,具备一定的逻辑思维能力和动手能力。
教学要求:注重理论与实践相结合,充分调动学生的积极性,引导学生在实践中掌握知识,提高技能,培养情感态度价值观。
教学过程中,将目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 电子设计自动化(EDA)基本概念介绍:包括EDA的定义、发展历程、应用领域等;相关教材章节:第一章 电子设计自动化概述2. 流水灯设计原理:讲解流水灯的工作原理、电路组成、编程方法;相关教材章节:第二章 常见数字电路设计实例3. 数字电路基础知识:回顾逻辑门、触发器等基础知识,并应用于流水灯设计;相关教材章节:第三章 数字电路基础知识4. EDA软件使用:学习Multisim、Protel等软件的基本操作,进行电路设计和仿真;相关教材章节:第四章 EDA软件及其应用5. 流水灯编程:学习编写简单的C语言程序,实现流水灯的控制;相关教材章节:第五章 C语言在数字电路设计中的应用6. 流水灯制作与调试:动手实践,分组进行流水灯的制作、编程与调试;相关教材章节:第六章 数字电路实践教学进度安排:1. 第1周:电子设计自动化基本概念介绍;2. 第2周:流水灯设计原理及电路组成;3. 第3周:数字电路基础知识回顾;4. 第4周:EDA软件使用;5. 第5周:流水灯编程;6. 第6周:流水灯制作与调试。
EDA课程设计---流水灯设计

EDA课程设计流水灯设计目录一、摘要··3二、流水灯设计目的··4三、流水灯设计流程··4四、流水灯设计程序··5五、流水灯设计管脚分配··7六、功能仿真图··8七、原理图波形图··9八、设计注意事项··10九、课程设计总结··11十、参考文献··12十一、评分表··13一、摘要随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。
随着技术市场与人才市场对EDA 的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
因此学好EDA技术对我们有很大的益处。
EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。
流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
课程设计主要的目的是通过某一电路的综合设计,了解一般电路综合设计过程、设计要求、应完成的工作内容和具体的设计方法、通过设计也有助于复习、巩固以往的学习内容、达到灵活应用的目的。
在设计完成后,还要将设计的电路进行安装、调试以加强学生的动手能力。
在此过程中培养从事设计工作的整体观念。
课程设计应强调以能力培养为主,在独立完成设计及制作任务同时注意多方面能力的培养与提高,主要包括以下方面:·独立工作能力和创造力。
·综合运用专业及基础知识,解决实际工程技术问题的能力。
eda流水灯实验报告

1. 实验目的1.通过此实验让用户进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及VHDL的编程方法,熟悉以Herilong HDL文件为顶层模块的设计。
2.学习和体会分支条件语句casc的使用方法及FPGA I/O口的输出控制。
2. 实验内容SmartSOPC实验箱上有8个按键KEY1~KEY8和8个发光二极管LED1~LED8。
在SmartSOPC实验箱上KEY1~KEY8通过跳线JP6的LED1~LED8分别于芯片的121~124、143、141、158、和156引脚相连。
本实验的内容是要求在SmartSOPC实验箱上完成对8个键盘KEY1~KEY8进行监控,一旦有键输入判断其键值,并点亮相应的发光二极管,如若KEY3按下,则点亮LED1~LED3发光管并且在放开时也能保持亮的状态。
3. 实验原理FPGA的所有I/O控制块允许每个I/O引脚单独置为输入口,不过这种配置是系统自动完成的,一旦该I/O口被设置为输入口使用时,该I/O控制模块将直接使三态缓冲区的控制端接地,使得该I/O引脚对外呈高阻态,这样改I/O引脚即可用作专用输入引脚。
只要正确分配并锁定引脚后,一旦在KEY1~KEY8中有键输入,在检测到键盘输入的情况下,继续判断其键盘值并作出相应的处理。
最后拿出跳线短接帽跳接到JP6的LED1~LED7、KEY1~KEY8使LED1~LED8和KEY1~KEY8和芯片对应的引脚相连。
拿出Altera ByteBlasterⅡ下载电缆,并将此电缆的两端分别接到PC机的打印机并口和QuickSOPC核芯板上的JTAG下载口上,打开电源,执行下载命令,把程序下载到FPGA器件中,按下KEY1~KEY8的任意键,观察LED1~LED8的状态。
4. 实验步骤1.启动QuartusⅡ建立一个空白工程,然后命名为keyboard 。
2.源程序文件命名为keyboard ,并选择器件为Altera公司Cyclone系列的EPIC12Q240C8芯片,如图1—1图1—13.新建Veriog HDL源程序文件,输入程序代码并保存。
EDA实验设计报告流水灯

EDA实验设计报告姓名:张炫学号:2011128085班级:11电工设计内容:设计8位流水灯的4种循环模式,并用quartusII进行编译和仿真,用LED灯实现需求。
控制系统方案:四种循环模式(1)灯从右到左依次都闪亮(2)灯从右向左逐次闪亮(3)灯从右向左逐次闪亮(4) 从右向左每间隔一个闪亮设计方案:通过复位端reset 与按键端right,left,shan,yici控制,当复位reset为 1 时led 灯最左端点亮,再通过else-if语句控制试验程序:module light(clk,reset,right,left,shan,yici,led);input clk,reset,right,left,shan,yici;output[7:0] led;reg[7:0] led;always @ (posedge clk)beginif(reset)beginled<=8’b00000001;endelsebeginif(yici)beginled<=((led<<1)+8’b00000001);if(led==8’b11111111)led<=8’b00000001;endif(right)beginled<=led>>1;if(led==8’b00000001)led<=8’b10000000;endif(left)beginled<=led<<1;if(led==8’b10000000)led<=8’b00000001;endif(shan)beginif(led==8’b01010101)led<=8’b10101010;elseled<=8’b01010101;endendendendmodule实验总结:经过本次课程设计使我进一步巩固了从课堂上学到的知识,虽然在实验过程中多次出错,但通过不断的检查和调试终于成功的实现了8位流水灯的控制。
基于EDA的流水灯实验

万年历的设计一、实验目标1. 巩固对基本的开发流程的掌握2. 复习对QUARTUS II软件的使用3. 复习NIOS II软件的使用4.在训练掌握相关软件使用的基础上,完成课题的设计二、设计要求用Nios II DE2开发楹的LCD(或8个七段数码管)显示电子钏的日期和时间。
LCD 分两行显示,第1行显示年、月和日(例如显示:20080101);第2行显示时、分和秒(例如显示:00152545)。
用输入按钮BUTTON[0]来控制LCD行修改,同时让Nios II DE2开发板上的绿色发光二极管LDG3的亮与灭来表示这个选择。
当BUTTON[0]按下一次后,LDG3亮,可以修改年、月和日的数字;再按一次BUTTON[0]后,LDG3灭,可以修改时、分和秒的数字。
另外和输入按钮BUTTON[3]来控制日期和时间的修改,当处于日期修改方式时,每按动一次BUTTON[3]按钮,依次更换“年”、“月”和“日”的修改。
当处于时间修改方式时,每按动一次BUTTON[3]按钮,依次更换“时”、“分”和“秒”的修改。
修改对象被选中后,按动BUTTON[2]输入按钮可以增加显示的数字;按动BUTTON[1]输入按钮可以减少显示的数字。
三、实验原理与步骤⑴在QUARTUS II 中建立工程⑵用SOPC BUILDER建立NIOS系统模块⑶在QUARTUS II 中的图形编辑界面中进行管脚连接、锁定工作⑷编译工程后下载到FPGA中⑸在NIOS II IDE中根据硬件建立软件工程⑹编译后,经过简单设置下载到FPGA中进行调试、验证下面根据以上的步骤进行进行一次全程开发:第一步:硬件部分设计1. 在自己的文件目录下建立一个hello_led文件夹,注意目录中不能有空格或中文;2. 打开QUARTUS II,点击FILE菜单下的New Project Wizard…会弹出如图2-1所示的对话框:图2-1 建立工程3. 然后输入工程存放目录,或点击工程路径右面的按钮设置工程存放目录,在第二栏中输入工程名称,我们这里输入为led;之后点击Finish,对话框消失,此时已经建立好了LED工程文件;4. 点击Assignment菜单中的Device,选择芯片为Cyclone II系列的EP2C35F672C6,如下图2-2所示:图2-2 选择器件5. 确认后。
EDA花样流水灯

EDA大作业流水灯设计基于Quartus II的花样流水灯的设计流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
1.设计目的a.学习使用EDA集成设计软件Quartus II,电路描述,综合,模拟过程b.了解基于EDA应用系统的设计方法c. 掌握使用EDA工具设计流水灯的设计思路和设计方法d.熟练使用Quartus II对实验程序进行改错,调试以及演示现象2. 设计说明流水灯设计是由八只LED显示灯来实现的,通过程序代码来控制这八只灯的亮灭,从而实现花型的变化(快慢,顺序)。
3.程序设计3.1library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY first ISPORT (clk : IN std_logic;rst : IN std_logic;c : OUT std_logic_vector(7 DOWNTO 0));END first;ARCHITECTURE arch OF first ISCONSTANT state0 : std_logic_vector(2 DOWNTO 0) := "000";CONSTANT state1 : std_logic_vector(2 DOWNTO 0) := "001";CONSTANT state2 : std_logic_vector(2 DOWNTO 0) := "010";CONSTANT state3 : std_logic_vector(2 DOWNTO 0) := "011";CONSTANT state4 : std_logic_vector(2 DOWNTO 0) := "100";CONSTANT state5 : std_logic_vector(2 DOWNTO 0) := "101"; CONSTANT state6 : std_logic_vector(2 DOWNTO 0) := "110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0) := "111"; SIGNAL state : std_logic_vector(2 DOWNTO 0);SIGNAL cnt : std_logic_vector(2 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (NOT rst = '1') THENstate <= state0;cnt <= "000";ELSIF(clk'EVENT AND clk='1')THENcnt <= cnt + "001";IF (cnt = "111") THENCASE state ISWHEN state0 =>state <= state1;WHEN state1 =>state <= state2;WHEN state2 =>state <= state3;WHEN state3 =>state <= state4;WHEN state4 =>state <= state5;WHEN state5 =>state <= state6;WHEN state6 =>state <= state7;WHEN state7 =>state <= state0; WHEN OTHERS =>NULL;END CASE;END IF;END IF;END PROCESS;PROCESS(state)BEGINCASE state ISWHEN state0 =>c <= "";WHEN state1 =>c <= "";WHEN state2 =>c <= "";WHEN state3 =>c <= "";WHEN state4 =>c <= "";WHEN state5 =>c <= "";WHEN state6 =>c <= "";WHEN state7 =>c <= "";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;3.2library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT (clk : IN std_logic;rst : IN std_logic;c : OUT std_logic_vector(7 DOWNTO 0));END second;ARCHITECTURE arch OF second ISCONSTANT state0 : std_logic_vector(2 DOWNTO 0) := "000"; CONSTANT state1 : std_logic_vector(2 DOWNTO 0) := "001"; CONSTANT state2 : std_logic_vector(2 DOWNTO 0) := "010"; CONSTANT state3 : std_logic_vector(2 DOWNTO 0) := "011"; CONSTANT state4 : std_logic_vector(2 DOWNTO 0) := "100"; CONSTANT state5 : std_logic_vector(2 DOWNTO 0) := "101"; CONSTANT state6 : std_logic_vector(2 DOWNTO 0) := "110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0) := "111"; SIGNAL state : std_logic_vector(2 DOWNTO 0);SIGNAL cnt : std_logic_vector(2 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (NOT rst = '1') THENstate <= state0;cnt <= "000";ELSIF(clk'EVENT AND clk='1')THENcnt <= cnt + "001";IF (cnt = "111") THENCASE state ISWHEN state0 =>state <= state1; WHEN state1 =>state <= state2; WHEN state2 =>state <= state3; WHEN state3 =>state <= state4; WHEN state4 =>state <= state5; WHEN state5 =>state <= state6; WHEN state6 =>state <= state7; WHEN state7 =>state <= state0; WHEN OTHERS =>NULL;END CASE;END IF;END IF;END PROCESS;PROCESS(state)BEGINCASE state ISWHEN state0 =>c <= "";WHEN state1 =>c <= "";WHEN state2 =>c <= "";WHEN state3 =>c <= "";WHEN state4 =>c <= "";WHEN state5 =>c <= "";WHEN state6 =>c <= "";WHEN state7 =>c <= "";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;3.3library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY third ISPORT (clk : IN std_logic;rst : IN std_logic;c : OUT std_logic_vector(7 DOWNTO 0));END third;ARCHITECTURE arch OF third ISCONSTANT state0 : std_logic_vector(2 DOWNTO 0) := "000"; CONSTANT state1 : std_logic_vector(2 DOWNTO 0) := "001"; CONSTANT state2 : std_logic_vector(2 DOWNTO 0) := "010"; CONSTANT state3 : std_logic_vector(2 DOWNTO 0) := "011"; CONSTANT state4 : std_logic_vector(2 DOWNTO 0) := "100"; CONSTANT state5 : std_logic_vector(2 DOWNTO 0) := "101"; CONSTANT state6 : std_logic_vector(2 DOWNTO 0) := "110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0) := "111"; SIGNAL state : std_logic_vector(2 DOWNTO 0);SIGNAL cnt : std_logic_vector(2 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (NOT rst = '1') THENstate <= state0;cnt <= "000";ELSIF(clk'EVENT AND clk='1')THENcnt <= cnt + "001";IF (cnt = "111") THENCASE state ISWHEN state0 =>state <= state1; WHEN state1 =>state <= state2; WHEN state2 =>state <= state3; WHEN state3 =>state <= state4; WHEN state4 =>state <= state5; WHEN state5 =>state <= state6; WHEN state6 =>state <= state7; WHEN state7 =>state <= state0; WHEN OTHERS =>NULLEND CASE;END IF;END IF;END PROCESS;PROCESS(state)BEGINCASE state ISWHEN state0 =>c <= "";WHEN state1 =>c <= "";WHEN state2 =>c <= "";WHEN state3 =>c <= "";WHEN state4 =>c <= "";WHEN state5 =>c <= "";WHEN state6 =>c <= "";WHEN state7 =>c <= "";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;3.4library ieee;use ieee.std_logic_1164.all;entity sanba isport(a,b,c:in std_logic;y7,y6,y5,y4,y3,y2,y1,y0:out std_logic); end entity sanba;architecture behav of sanba issignal abc: std_logic_vector(2 downto 0);beginabc <= a & b & c ;process(a,b,c)begincase abc iswhen "000" =>y0<='0';y1<='1';y2<='1';y3<='1';y4<='1';y5<='1';y6<='1';y7<='1';when "001" =>y0<='1';y1<='0';y2<='1';y3<='1';y4<='1';y5<='1';y6<='1';y7<='1';when "010" =>y0<='1';y1<='1';y2<='0';y3<='1';y4<='1';y5<='1';y6<='1';y7<='1';when "011" =>y0<='1';y1<='1';y2<='1';y3<='0';y4<='1';y5<='1';y6<='1';y7<='1';when "100" =>y0<='1';y1<='1';y2<='1';y3<='1';y4<='0';y5<='1';y6<='1';y7<='1';when "101" =>y0<='1';y1<='1';y2<='1';y3<='1';y4<='1';y5<='0';y6<='1';y7<='1';when "110" =>y0<='1';y1<='1';y2<='1';y3<='1';y4<='1';y5<='1';y6<='0';y7<='1';when "111" =>y0<='1';y1<='1';y2<='1';y3<='1';y4<='1';y5<='1';y6<='1';y7<='0'; when others =>end case;end process;end architecture behav;3.5 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY first ISPORT (clk : IN std_logic;rst : IN std_logic;c : OUT std_logic_vector(7 DOWNTO 0));END first;ARCHITECTURE arch OF first ISCONSTANT state0 : std_logic_vector(2 DOWNTO 0) := "000"; CONSTANT state1 : std_logic_vector(2 DOWNTO 0) := "001"; CONSTANT state2 : std_logic_vector(2 DOWNTO 0) := "010"; CONSTANT state3 : std_logic_vector(2 DOWNTO 0) := "011"; CONSTANT state4 : std_logic_vector(2 DOWNTO 0) := "100"; CONSTANT state5 : std_logic_vector(2 DOWNTO 0) := "101"; CONSTANT state6 : std_logic_vector(2 DOWNTO 0) := "110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0) := "111"; SIGNAL state : std_logic_vector(2 DOWNTO 0);SIGNAL cnt : std_logic_vector(2 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (NOT rst = '1') THENstate <= state0;cnt <= "000";ELSIF(clk'EVENT AND clk='1')THENcnt <= cnt + "001";IF (cnt = "111") THENCASE state ISWHEN state0 =>state <= state1;WHEN state1 =>state <= state2;WHEN state2 =>state <= state3;WHEN state3 =>state <= state4; WHEN state4 =>state <= state5; WHEN state5 =>state <= state6; WHEN state6 =>state <= state7; WHEN state7 =>state <= state0; WHEN OTHERS =>NULL;END CASE;END IF;END IF;END PROCESS;PROCESS(state)BEGINCASE state ISWHEN state0 =>c <= "";WHEN state1 =>c <= "";WHEN state2 =>c <= "";WHEN state3 =>c <= "";WHEN state4 =>c <= "";WHEN state5 =>c <= "";WHEN state6 =>c <= "";WHEN state7 =>c <= "";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;3.6 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY first ISPORT (clk : IN std_logic;rst : IN std_logic;c : OUT std_logic_vector(7 DOWNTO 0));END first;ARCHITECTURE arch OF first ISCONSTANT state0 : std_logic_vector(2 DOWNTO 0) := "000"; CONSTANT state1 : std_logic_vector(2 DOWNTO 0) := "001"; CONSTANT state2 : std_logic_vector(2 DOWNTO 0) := "010"; CONSTANT state3 : std_logic_vector(2 DOWNTO 0) := "011"; CONSTANT state4 : std_logic_vector(2 DOWNTO 0) := "100"; CONSTANT state5 : std_logic_vector(2 DOWNTO 0) := "101";CONSTANT state6 : std_logic_vector(2 DOWNTO 0) := "110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0) := "111"; SIGNAL state : std_logic_vector(2 DOWNTO 0);SIGNAL cnt : std_logic_vector(2 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (NOT rst = '1') THENstate <= state0;cnt <= "000";ELSIF(clk'EVENT AND clk='1')THENcnt <= cnt + "001";IF (cnt = "111") THENCASE state ISWHEN state0 =>state <= state1;WHEN state1 =>state <= state2;WHEN state2 =>state <= state3;WHEN state3 =>state <= state4;WHEN state4 =>state <= state5;WHEN state5 =>state <= state6;WHEN state6 =>state <= state7;WHEN state7 =>state <= state0; WHEN OTHERS =>NULL;END CASE;END IF;END IF;END PROCESS;PROCESS(state)BEGINCASE state ISWHEN state0 =>c <= "";WHEN state1 =>c <= "";WHEN state2 =>c <= "";WHEN state3 =>c <= "";WHEN state4 =>c <= "";WHEN state5 =>c <= "";WHEN state6 =>c <= "";WHEN state7 =>c <= "";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;3.7 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY first ISPORT (clk : IN std_logic;rst : IN std_logic;c : OUT std_logic_vector(7 DOWNTO 0));END first;ARCHITECTURE arch OF first ISCONSTANT state0 : std_logic_vector(2 DOWNTO 0) := "000"; CONSTANT state1 : std_logic_vector(2 DOWNTO 0) := "001"; CONSTANT state2 : std_logic_vector(2 DOWNTO 0) := "010"; CONSTANT state3 : std_logic_vector(2 DOWNTO 0) := "011"; CONSTANT state4 : std_logic_vector(2 DOWNTO 0) := "100"; CONSTANT state5 : std_logic_vector(2 DOWNTO 0) := "101"; CONSTANT state6 : std_logic_vector(2 DOWNTO 0) := "110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0) := "111"; SIGNAL state : std_logic_vector(2 DOWNTO 0);SIGNAL cnt : std_logic_vector(2 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (NOT rst = '1') THENstate <= state0;cnt <= "000";ELSIF(clk'EVENT AND clk='1')THENcnt <= cnt + "001";IF (cnt = "111") THENCASE state ISWHEN state0 =>state <= state1; WHEN state1 =>state <= state2; WHEN state2 =>state <= state3; WHEN state3 =>state <= state4; WHEN state4 =>state <= state5; WHEN state5 =>state <= state6; WHEN state6 =>state <= state7; WHEN state7 =>state <= state0; WHEN OTHERS =>NULL;END CASE;END IF;END IF;END PROCESS;PROCESS(state)BEGINCASE state ISWHEN state0 =>c <= "";WHEN state1 =>c <= "";WHEN state2 =>c <= "";WHEN state3 =>c <= "";WHEN state4 =>c <= "";WHEN state5 =>c <= "";WHEN state6 =>c <= "";WHEN state7 =>c <= "";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;3.8 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY first ISPORT (clk : IN std_logic;rst : IN std_logic;c : OUT std_logic_vector(7 DOWNTO 0));END first;ARCHITECTURE arch OF first ISCONSTANT state0 : std_logic_vector(2 DOWNTO 0) := "000"; CONSTANT state1 : std_logic_vector(2 DOWNTO 0) := "001"; CONSTANT state2 : std_logic_vector(2 DOWNTO 0) := "010"; CONSTANT state3 : std_logic_vector(2 DOWNTO 0) := "011"; CONSTANT state4 : std_logic_vector(2 DOWNTO 0) := "100"; CONSTANT state5 : std_logic_vector(2 DOWNTO 0) := "101"; CONSTANT state6 : std_logic_vector(2 DOWNTO 0) := "110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0) := "111"; SIGNAL state : std_logic_vector(2 DOWNTO 0);SIGNAL cnt : std_logic_vector(2 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (NOT rst = '1') THENstate <= state0;cnt <= "000";ELSIF(clk'EVENT AND clk='1')THENcnt <= cnt + "001";IF (cnt = "111") THENCASE state ISWHEN state0 =>state <= state1;WHEN state1 =>state <= state2;WHEN state2 =>state <= state3; WHEN state3 =>state <= state4; WHEN state4 =>state <= state5; WHEN state5 =>state <= state6; WHEN state6 =>state <= state7; WHEN state7 =>state <= state0; WHEN OTHERS =>NULL;END CASE;END IF;END IF;END PROCESS;PROCESS(state)BEGINCASE state ISWHEN state0 =>c <= "";WHEN state1 =>c <= "";WHEN state2 =>c <= "";WHEN state3 =>c <= "";WHEN state4 =>c <= "";WHEN state5 =>c <= "";WHEN state6 =>c <= "";WHEN state7 =>c <= "";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;4.流水灯原理图图1 顶层原理图5.仿真波形图图(2)顶层仿真波形图6.心得体会通过本次课程设计,我基本对EDA有了入门的了解和认识,在课堂之外进一步加深了对EDA课程各知识点的学习和以及quartusII软件开发平台的操作。
EDA流水灯课程设计

流水灯程序设计
编程语言:C语言 编译工具:Keil C51
开发环境:Keil uVision 调试工具:Keil Debugger
初始化:设置流水灯的初始状态,如关闭所有灯 循环控制:设置循环条件,如循环次数或循环时间 灯状态更新:根据循环条件,更新流水灯的状态,如依次点亮或熄灭 延时处理:在灯状态更新后,添加延时处理,使流水灯效果更加明显 结束处理:循环结束后,关闭所有灯,结束程序
EDA流水灯课程设计
汇报人:
目录
EDA流水灯概计
流水灯程序设计
流水灯硬件实现
流水灯系统优化与 扩展
EDA流水灯概述
流水灯是一种常见 的电子设备,用于 显示各种信息
流水灯通常由多个 LED灯组成,可以 显示不同的颜色和 亮度
流水灯可以通过 编程控制,实现 各种动态效果
流水灯的工作原理是通过控制LED灯的亮灭时间,使LED灯按照一定的顺序依次亮 起和熄灭。
流水灯的控制方式有多种,包括硬件控制和软件控制。硬件控制通常使用定时器 或计数器,软件控制通常使用微控制器或单片机。
流水灯的应用广泛,可以用于广告牌、指示灯、装饰灯等领域。
EDA软件介绍
添加标题 添加标题 添加标题 添加标题 添加标题 添加标题
编写流水灯程序:根据硬件电路和功能需求,编写相应的程序代码 调试流水灯程序:通过仿真软件或实际硬件设备,对编写的程序进行调试,确保其正确运行 优化流水灯程序:根据调试结果,对程序进行优化,提高运行效率和稳定性 编写流水灯程序的注意事项:注意硬件接口的匹配,避免出现硬件冲突等问题
流水灯硬件实现
发展趋势:智能 化、集成化、小 型化、低功耗
技术挑战:提高 稳定性、可靠性、 安全性
市场前景:随着 物联网、人工智 能等技术的发展, 流水灯系统将有 更广泛的应用前 景
EDA实验设计报告流水灯

EDA实验设计报告流水灯一、实验背景流水灯是一种光电组合组件,它大多由两个简单元件组成,一个是led发光二极管,另一个是电位器,可以改变二极管的亮度。
本实验以FATI0A0话题,使用IMO89C52单片机实现流水灯,探究LED的工作原理和单片机的控制原理。
二、实验目的1、通过练习,掌握FATI0A0开发工具的使用,熟悉FATI0A0的基础开发流程;2、掌握基于PORTA的控制方法,通过调节端口的输出电压,控制LED的亮度和闪烁;3、掌握基于定时器的控制方法,使LED实现流水灯效果;4、掌握电路结构和作用原理,用多种方式实现流水灯效果,利用延时函数编程,启用定时器0、定时器1和定时中断,掌握定时器的设置方法等。
三、实验环境本次流水灯实验由FATI0A0开发平台准备了硬件环境:实验台、IMO89C52单片机、晶振、电源、LED等组成。
四、实验步骤(一)编写程序1.首先利用CY8IDE软件设计并编写流水灯程序,开启定时器,通过定时中断实现LED 的闪烁;2.然后了解定时器1的设置方法,编写流水灯程序,将定时器1设置为内部计数,并设定中断周期;3.最后将定时器1设置为高中断优先级,以确保流水灯的互斥性。
(二)烧写1.连接实验台的FATI0A0和串口,Push连接拨码开关,检查元件布局是否正确;2.将编写的程序烧写到FATI0A0,同时将电源和晶振接到FATI0A0的连接器上;3.然后将烧写好的源代码下载到FATI0A0可编译环境,并在FATI0A0上启动,程序就会运行起来。
(三)验证1.将拉线连接到LED上,先检查LED是否能正常亮灭;2.将程序烧写到FATI0A0后,打开LED,检查流水灯效果,看是否按照要求显示;3.如果实验结果满足要求,实验就成功。
五、结论本次实验熟悉了FATI0A0开发环境的使用,掌握了PORTA的控制方法,熟悉了基于定时器的控制方法,使LED实现流水灯效果,用多种方式实现流水灯效果,利用延时函数编程,启动定时器0、定时器1和定时中断,掌握定时器的设置方法等,有助于更好、更全面地掌握IMO89C52单片机和流水灯的相关知识。
EDA实验一:流水灯与跑马灯

准备工作注意事项:先听老师进行讲解,然后才可以进行后面的操作。
①先进行软件破解。
破解方法可参考附件《QuartusII的奇幻漂流_v1.0》的第11-13页。
其中“licence.dat”文件在“C:\altera91\91”下,将“licence.dat”文件用记事本打开,将本电脑的网卡Mac地址去替换“HOSTID”后面的那一段,保存。
然后在quartus II菜单栏“tools”-“license setup”里把修改后的license.dat 挂上,即完成破解。
详细方法请听现场老师讲解。
(在破解之前先不要把USB-blaster数据线接到电脑上)②在插拔JTAG数据线的时候,必须保证实验箱的电源是关闭的。
如果通电时进行插拔JTAG数据线,极易损坏JTAG口。
如果不按要求操作造成设备损坏的,学生本人照价赔偿。
③驱动程序的安装。
将USB-blaster数据线接到电脑上,电脑会提示安装驱动,具体的安装方法可参考附件《QuartusII的奇幻漂流_v1.0》的第14-18页,也可听老师现场讲解。
④驱动安装好后,在保证实验箱电源是关闭的情况下,将USB-blaster数据线的JTAG接口连接到实验箱上的JTAG接口上。
连接无误后,再打开实验箱电源。
至此,准备工作就绪。
实验一流水灯与跑马灯一、实验目的1、通过一个简单的流水灯和跑马灯实验,掌握时序电路的设计方法;2、初步了解QUARTUS II 的使用全过程;3、熟悉实验箱的使用流程。
二、实验原理本实验实现的是让实验箱上的4个LED灯实现流水灯和跑马灯功能。
流水灯,就是让LED灯像流水一样地点亮。
如果把流水做慢动作播放,可以想象到其实就是移动,即:水块不断地向同一方向移动,而原来的水块保持不动,就形成了流水。
同样,如果使得最左边的灯先亮,然后,通过移位,在其右侧的灯,由左向右依次点亮,而已经亮的灯又不灭,便形成了向右的流水灯。
而当4个灯都点亮时,需要一个操作使得所有的灯恢复为初始状态,即灯都不亮。
EDA流水灯,数码管显示01234567,加减计数,

练习1.两位的循环彩灯,自定义的循环彩灯2.用另外的方式实现按键控制数码管加减3.设计一个在四个数码管上,显示拨码开关给定的值。
1、设计一个流水灯。
原理图设计:(8位流水灯)程序设计:(16位流水灯)module led_s(rst,clk,leds);input rst,clk;output [15:0] leds;reg [15:0] leds;reg [3:0]count;always @(posedge clk)beginif (rst)count <=16 'h00_00;elsebeginif(count==4'hf)count <=16 'h00_00;elsecount <=count+1;endendalways @(count)begincase(count)0: leds<= 16 'b0000_0000_0000_0001;1: leds<= 16 'b0000_0000_0000_0010;2: leds<= 16 'b0000_0000_0000_0100;3: leds<= 16 'b0000_0000_0000_1000;4: leds<= 16 'b0000_0000_0001_0000;5: leds<= 16 'b0000_0000_0010_0000;6: leds<= 16 'b0000_0000_0100_0000;7: leds<= 16 'b0000_0000_1000_0000;8: leds<= 16 'b0000_0001_0000_0000;9: leds<= 16 'b0000_0010_0000_0000;10: leds<=16 'b0000_0100_0000_0000;11: leds<=16 'b0000_1000_0000_0000;12: leds<=16 'b0001_0000_0000_0000;13: leds<=16 'b0010_0000_0000_0000;14: leds<=16 'b0100_0000_0000_0000;15: leds<=16 'b1000_0000_0000_0000;default: leds<=16 'hxxxx;endcaseendendmodule2、设计一个加减计数器,计数器的值在一位数码管上显示出来。
EDA流水灯设计

流水灯设计实验一.实验目的通过此实验让我们进一步了解,熟悉和掌握CPLD/FPGA开发软件的使用方法及VHDL 的编程方法和QuarturII原理图的输入与设计。
学习简单时序电路的设计和硬件的测试。
二.实验内容本实验的内容是建立可用于控制LED流水灯的简单硬件电路,要求在SMARTSOPC实验箱上实现LED1~LED8发光二极管流水灯显示。
三.实验原理在LED1~LED8引脚上周期性的输出流水数据,如原来输出的数据是11111100则表示点亮LED1,LED2(共阳接法),流水一次后,输出的数据应该为11111000,而此时则应点亮LED1~LED3三个LED发光二极管。
就可以实现LED流水灯。
为了观察方便,流水速率最好在2Hz左右。
在设计分频程序时,把48MHz的分频到2Hz,设计一个25位宽的计数器即可。
四.实验步骤(1)建立工程:启动QuartusII,在File中选择New Project Wizard···即建立了一个空白工程,命名为Ledwater,保存在自己建立的文件夹中,在选择芯片型号时对照实际情况,学校实验室一般为EP1C12Q240C8。
(2)创建源程序文件:在File中选择New···新建VHDL源程序文件ledwater.vhd,输入程序代码并保存,保存在上面新建的文件夹中。
然后在File中选择Creat Update中的Creat Symbol,进行编译,若在编译过程中发现错误,则找出并更正,直至编译成功。
(3)创建模块:在File中选择New···创建BlockDiagram模块,左键单击空白界面,出现框后,在Libraries中Project,里面为由ledwater.vhd生成名为ledwater.bsf的模块符号,选择模块放入界面后,左键单击模块,选择Generate Pins For Symbol Ports,就出现了输入和输出引脚,双击各管脚符号,进行管脚命名,与输出与输入口一致既可。
EDA流水灯设计

一、实验目的
1.熟练掌握Quartus II原理图设计数字电路的方法;
2.掌握译码器、移位寄存器、计数器等的使用方法;
3.设计一个彩灯控制器,要求有四种不同形式自动变化。
二、所用器件
图1、二进制计数器图2、bcd计数器图3、移位寄存器图4、双2-4译码器
三、 设计方案
如图5所示为总体方框图。
3、花样控制器
花样控制器是一个2-4译码器,选择花样,并使其轮所示,LED指示灯显示过程是:八个灯依次被点亮,当所有灯都点亮后再将它们熄灭,再依次点亮所有灯……
图7
花样二如图8所示,LED指示灯显示过程是:第一个LED灯亮,其它灯灭,向左循
图8
花样三如图9所示,LED指示灯显示过程是:先点亮所有灯,再依次熄灭
图5、彩灯流程图
1、分频器
将实验箱48MHZ的频率分成1HZ、2HZ、4HZ、8HZ等频率,以供花样电路、时间选择器使用。电路图如图6所示下:
图6
2、时间选择器
时间选择器是一个二分频的分频器,将1HZ分成1/4HZ和1/8HZ,可以实现00、01、10、11的周期变化,在接上译码器就可以实现四种花样电路轮流变化。
EDA课程设计流水灯设计

EDA课程设计流水灯设计教学目标:通过设计流水灯的项目,让学生熟悉EDA工具的使用,了解数字电路的基本原理和设计思想。
教学内容:1. 数字电路基础知识复习:- 二进制和十进制的转换- 逻辑门的基本原理和真值表- Karnaugh图的绘制与简化逻辑表达式2. EDA工具的介绍:- 常见的EDA工具有哪些- EDA工具的安装与配置3. 流水灯的基本原理和设计思路:- 利用时钟信号控制LED灯的亮灭- 利用触发器实现流水灯效果- 设计时钟频率、LED灯数量等参数4. EDA工具的使用:- 创建新项目- 绘制电路图- 设置时钟频率和参数- 仿真电路并观察波形5. 流水灯设计:- 使用逻辑门和时序电路设计流水灯- 绘制电路图并进行仿真- 优化电路设计,减少逻辑门的使用6. 实验报告撰写:- 记录实验设计和过程- 分析实验结果教学步骤:1. 复习数字电路基础知识,包括二进制和十进制的转换、逻辑门的基本原理和真值表、Karnaugh图的绘制与简化逻辑表达式等。
2. 介绍常见的EDA工具并进行安装与配置。
3. 分析流水灯的基本原理和设计思路,包括利用时钟信号控制LED灯的亮灭、利用触发器实现流水灯效果、设计时钟频率、LED灯数量等参数。
4. 演示EDA工具的使用,创建新项目,绘制电路图,设置时钟频率和参数,进行电路仿真并观察波形。
5. 根据教学步骤4中演示的方法,引导学生设计流水灯电路,并进行仿真。
6. 分析仿真结果,讨论实际电路与理论设计的差异。
7. 优化电路设计,减少逻辑门的使用,提高电路的性能。
8. 学生根据实验过程和结果撰写实验报告。
教学评估:1. 在设计流水灯电路时,学生的思路清晰,能够正确设置时钟频率和参数。
2. 在电路仿真中,学生能够正确绘制电路图并观察波形。
3. 在优化电路设计时,学生能减少逻辑门的使用,提高电路的性能。
4. 学生能够撰写清晰、准确的实验报告,对实验过程和结果进行分析。
扩展练习:1. 设计多种流水灯效果,如交替闪烁、循环移动等。
EDA流水灯的设计

一.流水灯控制的设计1.题目1).设计要求设计能让一排灯(8只)自动改变显示花样的控制系统。
可将实验板上的一排发光二极管作为彩灯用。
控制器应有两种控制方式:◆规则变化。
变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或二个周期后轮换。
彩灯变化方向有单向移动,双向移动,跳跃移动等。
◆随机变化。
变化花样相同,但节拍及花样的转换都随机出现。
2).设计提示▲灯光移动用移位寄存器实现。
各种花样,有的可以存于寄存器中,使用时并行置人移位寄存器,有的可以利用环形计数器或扭环计数器实现。
▲节拍信号可选用实验板上的振荡器,花样控制信号可用计数器控制。
▲随机信号可以用长度大于是15的伪随机序列信号发生器或用高速时钟驱动上述4位计数器得到。
2.引言EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。
随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
因此学好EDA技术对我们有很大的益处。
EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。
3.设计思路1)灯光移动用移位寄存器实现,各种花样,有的可以存于寄存器中,使用时并行置入移位寄存器,有的可以利用环形计数器或扭环计数器实现。
2)节拍信号可选用实验板上的振荡器,花样控制信号可用4位计数器实现控制,1为节拍变化,另三位控制花样。
3)随机信号可以用长度大于15的伪随机序列信号发生器或用高速时钟驱动计数器得到4.代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity KKJ isport(clk: in std_logic;clr: in std_logic;choose: in std_logic_vector(2 downto 0);led: out std_logic_vector(7 downto 0));end KKJ;architecture control of KKJ issignal cnt1:std_logic_vector(1 downto 0);signal cnt2:std_logic_vector(1 downto 0);signal cnt3:std_logic_vector(1 downto 0);signal cnt4:std_logic_vector(1 downto 0);signal cnt5:std_logic_vector(1 downto 0);signal cnt6:std_logic_vector(1 downto 0);signal cnt7:std_logic_vector(1 downto 0);signal cnt8:std_logic_vector(1 downto 0);beginprocess(clk,clr)beginif clr='0'thenled<="00000000";elseif choose="000" thenif clk'event and clk='0' thencnt1<=cnt1+1;end if;case cnt1 iswhen "00"=>led<="10000000";when "01"=>led<="01000000";when "10"=>led<="00100000";when "11"=>led<="00010000";end case;elsif choose="001" thenif clk'event and clk='1' thencnt2<=cnt2+1;end if;case cnt2 iswhen "00"=>led<="00000001";when "01"=>led<="00000010";when "10"=>led<="00000100";when "11"=>led<="00001000"; end case;elsif choose="010" thenif clk'event and clk='1' then cnt3<=cnt3+1;end if;case cnt3 iswhen "00"=>led<="10000000";when "01"=>led<="00100000";when "10"=>led<="00001000";when "11"=>led<="00000010"; end case;elsif choose="011" thenif clk'event and clk='1' thencnt4<=cnt4+1;end if;case cnt4 iswhen "00"=>led<="00000001";when "01"=>led<="00000100";when "10"=>led<="00010000";when "11"=>led<="01000000"; end case;elsif choose="100" thenif clk'event and clk='0' thencnt5<=cnt5+1;end if;case cnt5 iswhen "00"=>led<="10000001";when "01"=>led<="11000011";when "10"=>led<="11100111";when "11"=>led<="11111111"; end case;elsif choose="101" thenif clk'event and clk='1' thencnt6<=cnt6+1;end if;case cnt6 iswhen "00"=>led<="01111110";when "01"=>led<="00111100";when "10"=>led<="00011000";when "11"=>led<="00000000";end case;elsif choose="110" thenif clk'event and clk='1' thencnt7<=cnt7+1;end if;case cnt7 iswhen "00"=>led<="11000000";when "01"=>led<="00110000";when "10"=>led<="00001100";when "11"=>led<="00000011";end case;elsif choose="111" thenif clk'event and clk='1' thencnt8<=cnt8+1;end if;case cnt8 iswhen "00"=>led<="10000001";when "01"=>led<="01000010";when "10"=>led<="00100100";when "11"=>led<="00011000";end case;end if;end if;end process;end architecture control;5.运行结果:1)运行代码2)波形图上可清楚的看出彩灯的移向。
EDA:流水灯实验

end process;
led_8bit<=tmp;
end keyboard1;
在完成流水灯源程序的编辑后,执行”Processing”菜单下的“Start Compilation”命令,对keyboard1.vhd进行编译。
在完成对源文件的编译后,执行“File”菜单的“New”命令,或者直接按主窗口上的“创建新的文本文件”按钮,在弹出的新文件类型选择对话框中,选择“Vector Waveform File”生成仿真文件。
对引脚进行锁定。
执行”Assignments”菜单下的“Pins”命令,根据下图进行引脚设置。
用电缆连接电脑与设备箱,执行”Tools”菜单下的“Programmer”命令,在弹出的对话框中,单击“Hardware Setup”并在新弹出的对话框中选择驱动,然后退出至上一层对话框,单击“Start”进行下载烧录。
【实验数据整理与归纳】
keyboard11.vhd 实际效果图
keyboard11.vwf
【实验结果与分析】
计数译码系统电路的仿真波形如图keyboard11.vwf所示,键值为"1110"时,LED0~LED7的状态应为"11000000";键值为"1101"时,LED0~LED7的状态应为"00110000",依此类推。
仿真结果验证了设计的正确性。
而实际情况与仿真结果相吻合。
【实验中遇到的问题及解决方案】
1.不知道如何对引脚进行锁定。
解决方案:上网搜寻教程。
2.驱动安装失败。
解决方案:根据老师发的教程,更换别的方法进行安装。
eda流水灯实验工作原理

eda流水灯实验工作原理
EDA流水灯实验是一种基础电子实验,旨在帮助学生理解数
字电子技术中的时序控制原理,实现流水灯效果。
它的工作原理如下:
1. 硬件部分:实验所需的硬件主要包括多个发光二极管(LED)、电阻、开关、以及一块微控制器芯片等。
每个LED都通过电
阻连接到芯片的输出引脚上。
2. 软件控制:在微控制器芯片上编写流水灯的控制程序。
程序中主要使用了一个循环结构来不断循环执行流水灯的效果。
3. 工作流程:当实验电路通电后,微控制器芯片开始执行流水灯的控制程序。
程序首先将某一位(LED)点亮,然后等待一段
时间后熄灭,接着点亮下一个位,循环进行。
这样,每个
LED在不同的时间段内依次点亮和熄灭,产生流动的灯光效果。
4. 时序控制原理:流水灯实验通过微控制器的程序实现了时序控制。
在程序中,通过控制延时时间和LED的点亮顺序,使
每个LED在一定时间后交替工作,从而呈现出流水灯效果。
而微控制器的高速运算能力和灵活性,使得流水灯的灯光切换可以更加精确和流畅。
总之,EDA流水灯实验通过硬件电路和软件控制相结合的方式,利用时序控制原理,实现了LED灯光的流水效果。
这个
实验简单易懂,可以帮助学生初步理解和掌握数字电子技术中的时序控制原理。
EDA流水灯,数码管显示01234567,加减计数,

练习1.两位的循环彩灯,自定义的循环彩灯2.用另外的方式实现按键控制数码管加减3.设计一个在四个数码管上,显示拨码开关给定的值。
1、设计一个流水灯。
原理图设计:(8位流水灯)程序设计:(16位流水灯)module led_s(rst,clk,leds);input rst,clk;output [15:0] leds;reg [15:0] leds;reg [3:0]count;always @(posedge clk)beginif (rst)count <=16 'h00_00;elsebeginif(count==4'hf)count <=16 'h00_00;elsecount <=count+1;endendalways @(count)begincase(count)0: leds<= 16 'b0000_0000_0000_0001;1: leds<= 16 'b0000_0000_0000_0010;2: leds<= 16 'b0000_0000_0000_0100;3: leds<= 16 'b0000_0000_0000_1000;4: leds<= 16 'b0000_0000_0001_0000;5: leds<= 16 'b0000_0000_0010_0000;6: leds<= 16 'b0000_0000_0100_0000;7: leds<= 16 'b0000_0000_1000_0000;8: leds<= 16 'b0000_0001_0000_0000;9: leds<= 16 'b0000_0010_0000_0000;10: leds<=16 'b0000_0100_0000_0000;11: leds<=16 'b0000_1000_0000_0000;12: leds<=16 'b0001_0000_0000_0000;13: leds<=16 'b0010_0000_0000_0000;14: leds<=16 'b0100_0000_0000_0000;15: leds<=16 'b1000_0000_0000_0000;default: leds<=16 'hxxxx;endcaseendendmodule2、设计一个加减计数器,计数器的值在一位数码管上显示出来。
eda课程设计流水灯控制

eda课程设计流水灯控制一、课程目标知识目标:1. 让学生掌握EDA(电子设计自动化)的基本概念和原理;2. 使学生了解流水灯控制的硬件设计原理,掌握相关的电路图绘制和仿真;3. 引导学生掌握C语言编程控制流水灯的方法,理解程序与硬件的关联。
技能目标:1. 培养学生运用EDA软件进行电路设计和仿真的能力;2. 培养学生运用C语言编写控制程序,实现流水灯功能;3. 提高学生动手实践能力,培养团队合作精神。
情感态度价值观目标:1. 激发学生对电子设计的兴趣,培养创新意识和探索精神;2. 培养学生严谨、细心的学习态度,提高分析和解决问题的能力;3. 引导学生认识到科技对社会发展的贡献,增强社会责任感。
分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握基本理论知识的基础上,通过实践操作,培养实际设计和制作电子产品的能力。
课程目标具体、可衡量,有助于学生和教师在教学过程中明确预期成果,为教学设计和评估提供依据。
二、教学内容1. EDA基本概念与原理:介绍EDA的发展历程、基本概念、设计流程和常用软件工具。
相关教材章节:第一章 电子设计自动化概述。
2. 流水灯硬件设计:讲解流水灯的电路原理,引导学生学习如何绘制电路图并进行仿真。
相关教材章节:第二章 常用电子元器件;第三章 电路设计与仿真。
3. C语言编程控制流水灯:教授C语言基础知识,指导学生编写程序实现流水灯的控制。
相关教材章节:第四章 C语言基础;第五章 微控制器编程。
4. 实践操作:组织学生进行EDA软件操作,绘制电路图,编写程序,实现流水灯功能。
相关教材章节:第六章 实践操作与案例分析。
教学大纲安排:第一周:EDA基本概念与原理学习;第二周:流水灯硬件设计与电路图绘制;第三周:C语言基础学习;第四周:流水灯控制程序编写;第五周:实践操作与成果展示。
教学内容科学性和系统性较强,结合教材章节和教学实际,使学生能够循序渐进地掌握EDA流水灯控制的相关知识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
彩灯控制器
一、设计内容及要求:
设计一个彩灯控制器,要求:
1.四路彩灯从左向右逐次渐亮,间隔为1秒。
2.四路彩灯从右向左逐次渐灭,间隔为1秒。
3.四路彩灯同时点亮,时间间隔为1秒,然后同时变暗,时间为1秒,反复4次。
二、总体框图
图(1)总体框图
根据设计要求,电路设计大体思路如下:
由脉冲发生器发出频率脉冲信号,利用计数器加法计数功能输出0000~1111的脉冲信号,经过数据选择器分别在0000~0011,0100~0111,1000~1111三个时段输出不同的高低电平,控制移位寄存器实现右移→左移→置数功能,从而控制彩灯按照设计要求实现亮灭。
三、选择器件
本次课程设计所用器件如表一:
表一本次课程设计所用器件
1.同步二进制计数器74LS163
表二7-3 74LS163功能表
根据逻辑图、波形图、功能表分析,74LS163具有如下功能:
管脚图逻辑符号
1)1是同步4位二进制加法计数器,M=16,CP上升沿触发
2)2既可同步清除,也可异步清除。
同步清除时,清除信号的低电平将在下一个CP上升沿配合下把四个触发器的输出置为低
电平。
异步清除时,直接用清除信号的低电平把四个触发器的输出置为低电平。
3)3同步预置方式:当LD = 0时,在CP作用下,计数器可并行打入预置数据.当LD = 1时,使能输入PT同时为高电平,在
CP作用下,进行正常计数。
4)PT任一为低时,计数器处于保持状态。
5) 5 CO为进位输出,可用来级联成n位同步计数器。
2.四位双向移位寄存器74LS194
74LS194内部原理图
74LS194四位双向移位寄存器具有左移、右移、并行数据输入、保持、清除功能。
1)从图1中74LS194的图形符号和引脚图分析。
SRG4是4位移位寄存器符号,D0~D3并行数据输入端、D SL左移串行数据输入端、D SR右移串行数据输入端、S A(M0)和S B (M1)(即9脚和10脚)工作方式控制端分别接电平开关,置1或置0,CP 时钟输入端接正向单次脉冲,清零端接负向单次脉冲,Q0~Q3输出端。
表三逻辑符号逻辑框图
3.十六选一数据选择其74150
74150内部原理图
逻辑框图逻辑符号
十六选一的数据选择器74150并行输入D
0~D
15
十六个数据,当选择输入A
3
A
2
A
1
A
的二进制数码依次由0000递增至1111,即其最
小项由m0逐次变到m15时,16个通道的数据便依次传送到输出端,转换成串行数据。
4.非门74LS04
仔细观察一下图中给出的三极管开关电路即可发现,当输入为高电平时输出等于低电平,而输入为低电平时输出等于高电平。
因此输出与输入的电平之间是反向关系,它实际上就是一个非门。
(亦称反向器)。
当输入信号为高电平时,应保证三极管工作在深度饱和状态,以使输出电平接近于零。
为此,电路参数的配合必须合适,保证提供给三极的基极电流大于深度饱和的基极电流。
设计电路所用的芯片是74LS04,如下图所示:
图(12) 74LS04的内部结构图
图(13)三极管非门74LS04的逻辑框图
功能表如下图:
表六非门功能表
图(14)74LS04的逻辑符号
逻辑函数式Y= A
四、功能模块
在设计单元电路和选择元器件时,尽量选用同类型的元器件,如所有功能的部件都采用TTL集成电路,整个系统所用的元器件种类尽可能少。
下面介绍各单元电路的设计。
1.脉冲发生
由脉冲发生器发出频率为1HZ,幅度为5V的连续脉冲信号,输入74LS163同步二进制计数器,利用74LS加法计数功能输出0000~1111的脉冲信号。
2.信号控制
由74LS163输出的0000~1111的脉冲信号输入3片十六选一数据选择器74150,
当输入信号为0000~0011时,第一片和第二片74150输出信号为0,经过74LS04非门变为高电平,第三片74150输出信号为1,经过74LS04非门变为低电平。
当输入信号为0100~0111时,第一片和第三片74150输出信号为0,经过74LS04非门变为高电平,第二片74150输出信号为1,经过74LS04非门变为低电平。
当输入信号为1000~1111时,第二片和第三片74150输出信号为0,经过74LS04非门变为高电平,第一片74150输出信号为0/1不断交换。
3.彩灯控制
三片74150的输出端分别接四位双向移位寄存器74LS194的CLR端S0端和S1端。
当计数器输出信号为0000~0011时,CLR端和S0端输入为高电平,S1端输入为低电平,彩灯从左向右依次点亮,时间间隔为1秒。
当计数器输出信号为0100~0111时,CLR端和S1端输入为高电平,S0端输入为低电平,彩灯从右向左依次熄灭,时间间隔为1秒。
当计数器输出信号为1000~1111时,S0端和S1端输入为高电平,CLR端输入为高/低电平交替,四盏彩灯同时点亮火熄灭,时间间隔为一秒。
五、总体设计电路图
(1)总电路说明:
图中由脉冲发生器输出1HZ脉冲,输出端接到计数器74LS163的CLK端,通过74LS163的计数功能,发出0000~1111的信号,计数器的四个输出端Q0Q1Q2Q3分别加在十六选一数据选择器74150的ABCD端,第一片74150的输出端加非门后接在74LS194的CLR端,第二片74150的输出端加非门后接在74LS194的S0端,第三片数据选择器的输出端加非门后接在74LS194的S1端,使彩灯按照设计要求变化。
(2) Multisim仿真结果
用Multisim对总电路进行仿真,仿真开始后,彩灯依时间顺序按设计要求变亮或熄灭。
这一点也可以从电路图仿真结果中得到验证。
(3)总电路的硬件实现
各模块的功能已经在功能模块中得到了硬件实现,并验证正确,将各模块连接起来,打开电源开关,四个发光二极管从左
向右逐次渐亮又从右向左逐次渐灭,之后同时变亮又变灭,重复四次,时间间隔为1秒,从而总电路得到验证。
六、课程设计总结
通过两个星期的努力,终于完成了这次课程设计。
在此次课程设计实验中,我学会了寄存器的使用方法,熟悉了寄存器的一般应用,基本掌握了数字系统设计和调试的方法。
在这个数字电路中我们可以观测到,当输入“16”个脉冲以后,输出数据回到起始值,16个脉冲一循环,因此,可以把该电路作为一个“16”进制的计数器。
通过本课程设计我基本掌握了数字系统的
仿真与设计方法。
使我认识到在实际电路的连接时,要注意每一个引脚的接法。
由于实物的连接和电路仿真软件有差别,要经过多次调试才能实现其功能的演示。