EDA课程设计流水灯设计
- 格式:doc
- 大小:617.00 KB
- 文档页数:13
彩灯控制器一、设计内容及要求:设计一个彩灯控制器,要求: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.四位双向移位寄存器74LS19474LS194内部原理图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输出端。
案例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 仿真结果。
滨江学院课程论文(可编程器件原理与应用)题目基于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输入端的数值大小,产生不同频率的周期信号,从而达到控制彩灯变化速率的目的。
万年历的设计一、实验目标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. 确认后。
l流水灯课程设计一、教学目标本课程旨在通过流水灯的制作,让学生了解和掌握基础的电子电路知识,培养学生动手实践能力和团队协作能力。
知识目标:使学生了解流水灯的原理,掌握基本的电子元件使用方法,了解简单的电路图阅读和绘制。
技能目标:培养学生使用电子工具的能力,如切割、焊接、组装等,训练学生解决实际问题的能力,提高学生的创新思维。
情感态度价值观目标:培养学生对科学探究的兴趣,激发学生对工程技术领域的热情,强化学生的环保意识。
二、教学内容本课程的教学内容主要包括流水灯的原理、电子元件的使用、电路图的阅读和绘制、流水灯的制作等。
1.流水灯的原理:介绍流水灯的工作原理,使学生了解电路的基本构成。
2.电子元件的使用:详细讲解各种电子元件的功能和用途,如电阻、电容、二极管、晶体管等。
3.电路图的阅读和绘制:教授学生如何阅读电路图,如何根据需求绘制电路图。
4.流水灯的制作:指导学生动手制作流水灯,培养学生的实践操作能力。
三、教学方法本课程将采用讲授法、实践法、小组讨论法等教学方法。
1.讲授法:用于讲解流水灯的原理、电子元件的使用和电路图的阅读和绘制。
2.实践法:用于流水灯的制作环节,让学生动手实践,提高操作能力。
3.小组讨论法:用于解决制作过程中遇到的问题,培养学生的团队协作能力和解决问题的能力。
四、教学资源教学资源包括教材、参考书、多媒体资料、实验设备等。
1.教材:提供基础的理论知识,指导学生学习。
2.参考书:丰富学生的知识视野,帮助学生更深入地理解电子电路知识。
3.多媒体资料:通过视频、图片等形式,生动形象地展示流水灯的原理和制作过程。
4.实验设备:包括电子元件、电路板、焊锡丝等,用于学生的实践操作。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面、客观、公正地评价学生的学习成果。
1.平时表现:通过观察学生在课堂上的参与程度、提问回答、小组讨论等,评估学生的学习态度和理解程度。
2.作业:布置相关的电路设计、实验报告等作业,评估学生的掌握程度和应用能力。
大规模数字逻辑课程设计题目:流水灯控制专业电信班级091学号************学生姓名dashitou设计时间2011-2012学年上学期教师评分2011年10 月29 日目录一、概述 (3)二、 EDA技术发展及介绍 (3)(一) EDA技术的介绍 (3)(二) EDA技术的发展趋势 (4)三、程序代码 (5)(一) 分频器代码 (5)(二) 分频器block (6)(三) 主程序代码 (6)(四) 主程序block (9)(五) 总的block模块 (9)四、管脚分配 (9)五、设计原理 (10)六、心得体会 (10)七、参考文献 (10)一、概述流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。
流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。
二、EDA技术发展及介绍(一) EDA技术的介绍EDA是电子设计自动化(Electronic Design Automation)缩写,EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。
随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
因此学好EDA技术对我们有很大的益处。
EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。
目录一、............................................................................................... EDA技术和设计题目简介1EDA技术简介 (1)EDA技术概念 (2)VHDL的简介 (2)流水灯电路设计简介 (3)二、...................................................................................................... 设计方案的论证及选择4二、1 方案一 (4)方案二 (4)方案的选择 (5)三、.................................................................................................................................... 设计实现6芯片简介 (6)大体参数如下: (6)方式选择电路 (7)时钟电路的设计 (8)LED显示电路的设计 (9)整体电路设计图 (9)流水灯总设计电路图 (11)四、总结 (13)六参考文献 (14)七附录 (15)一、EDA技术和设计题目简介EDA技术简介20世纪90年代,国际上电子和运算机技术较先进的国家,一直在踊跃探索新的电子电路设计方式,并在设计方式、工具等方面进行了完全的变革,取得了庞大成功。
在电子技术设计领域,可编程逻辑器件(如、)的应用,已取得普遍的普及,这些器件为的设计带来了极大的灵活性。
这些器件能够通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计能够犹如软件设计那样方便快捷。
这一切极大地改变了传统的方式、设计进程和设计观念,增进了EDA技术的迅速进展。
EDA技术就是以运算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由运算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
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软件开发平台的操作。
练习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、设计一个加减计数器,计数器的值在一位数码管上显示出来。
1. 实验目的1. 通过此实验让用户进一步了解、熟悉和掌握CPLD/FPG开发软件的使用方法及VHDL的编程方法,熟悉以Herilong HDL文件为顶层模块的设计。
2. 学习和体会分支条件语句case的使用方法及FPGA I/O 口的输出控制。
2. 实验内容SmartSOP(实验箱上有8个按键KEY 1~KEY和8个发光二极管LED1~LED8在SmartSOP(实验箱上KEY 1~KEY通过跳线JP6的LED1~LED分别于芯片的121~124 143、141、158、和156 引脚相连。
本实验的内容是要求在SmartSOP(实验箱上完成对8个键盘KEY 1~KEY进行监控,一旦有键输入判断其键值,并点亮相应的发光二极管,如若KEY3按下,则点亮LED1~LED发光管并且在放开时也能保持亮的状态。
3. 实验原理FPGA勺所有I/O控制块允许每个I/O引脚单独置为输入口,不过这种配置是系统自动完成的,一旦该I/O 口被设置为输入口使用时,该I/O 控制模块将直接使三态缓冲区的控制端接地,使得该I/O引脚对外呈高阻态,这样改I/O引脚即可用作专用输入引脚。
只要正确分配并锁定引脚后,一旦在KEY 1~KEY中有键输入,在检测到键盘输入的情况下,继续判断其键盘值并作出相应的处理。
最后拿出跳线短接帽跳接到 JP6的LED1~LED 7 KEY 1~KEY 使 LED1~LED8口 KEY 1~KEY 和芯片对应的引脚相连。
拿出 Altera ByteBlaster H 下载电缆,并将此电缆的两端分别接到 PC 机的打印 机并口和QuickSOPC 核芯板上的JTAG 下载口上,打开电源,执行 下载命令,把程序下载到FPGA 器件中,按下KEY 1~KE 丫的任意键, 观察LED1~LED8勺状态。
4.实验步骤1.启动Quartus H 建立一个空白工程,然后命名为keyboard 2.源程序文件命名为 keyboard ,并选择器件为Altera 公司Cyclone 系列的 EPIC12Q240C 芯片,如图 1 — 1Device familyDevices: |AII图1 — 13. 新建Veriog HDL 源程序文件,输入程序代码并保存。
l流水灯课程设计一、教学目标本课程旨在通过流水灯项目的设计与实现,让学生掌握基本的电子电路知识,培养学生的动手能力和创新思维。
知识目标包括了解流水灯的工作原理,熟悉常用电子元器件的特性及应用;技能目标包括能够设计简单的电子电路,进行电路搭建和调试;情感态度价值观目标包括培养学生的团队合作意识,激发学生对电子科技的兴趣和好奇心。
二、教学内容教学内容主要包括流水灯的工作原理、电子元器件的特性和应用、电路设计和搭建、电路调试等。
具体包括以下几个部分:1.流水灯的工作原理:介绍流水灯的基本工作原理,让学生了解电路中各部分的作用和功能。
2.电子元器件的特性及应用:讲解常用电子元器件如电阻、电容、二极管、三极管等的特性及应用,让学生熟悉并能够正确选用这些元器件。
3.电路设计和搭建:引导学生根据流水灯的工作原理,设计电路图并进行电路搭建。
4.电路调试:教授学生如何进行电路调试,找出并解决电路中可能出现的问题。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
1.讲授法:用于讲解流水灯的工作原理、电子元器件的特性及应用等理论知识。
2.讨论法:鼓励学生针对电路设计和调试过程中遇到的问题进行讨论,培养学生的团队合作意识。
3.案例分析法:通过分析典型的流水灯电路案例,让学生了解实际应用中可能遇到的问题及解决方法。
4.实验法:让学生动手搭建和调试流水灯电路,提高学生的实践操作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用与流水灯项目相关的基础电子电路教材,为学生提供理论知识的学习。
2.参考书:提供电子电路相关领域的参考书籍,帮助学生拓展知识面。
3.多媒体资料:制作课件、视频等多媒体资料,形象生动地展示电路原理和实验过程。
4.实验设备:准备电路实验所需的元件和实验设备,如电阻、电容、二极管、三极管等,以及电路搭建和调试所需的工具。
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流水灯实验是一种基础电子实验,旨在帮助学生理解数
字电子技术中的时序控制原理,实现流水灯效果。
它的工作原理如下:
1. 硬件部分:实验所需的硬件主要包括多个发光二极管(LED)、电阻、开关、以及一块微控制器芯片等。
每个LED都通过电
阻连接到芯片的输出引脚上。
2. 软件控制:在微控制器芯片上编写流水灯的控制程序。
程序中主要使用了一个循环结构来不断循环执行流水灯的效果。
3. 工作流程:当实验电路通电后,微控制器芯片开始执行流水灯的控制程序。
程序首先将某一位(LED)点亮,然后等待一段
时间后熄灭,接着点亮下一个位,循环进行。
这样,每个
LED在不同的时间段内依次点亮和熄灭,产生流动的灯光效果。
4. 时序控制原理:流水灯实验通过微控制器的程序实现了时序控制。
在程序中,通过控制延时时间和LED的点亮顺序,使
每个LED在一定时间后交替工作,从而呈现出流水灯效果。
而微控制器的高速运算能力和灵活性,使得流水灯的灯光切换可以更加精确和流畅。
总之,EDA流水灯实验通过硬件电路和软件控制相结合的方式,利用时序控制原理,实现了LED灯光的流水效果。
这个
实验简单易懂,可以帮助学生初步理解和掌握数字电子技术中的时序控制原理。
目录1、EDA技术发展及介绍 (2)1.1EDA技术的介绍 (2)1.2 EDA技术的发展 (2)1.3 EDA技术的发展趋势 (3)2、总体方案设计 (4)2.1设计内容 (4)2.2设计方案比较 (4)2.3方案论证 (5)3、单元模块设计 (7)3.1有源晶振电路 (7)3.2供电电路 (8)3.3 PS配置电路 (9)3.5 LED灯输出电路 (10)4、特殊器件的介绍 (11)4.1 CPLD器件介绍 (11)4.2 FPGA器件介绍 (11)4.3 EP1K30TC144器件介绍 (12)5、软件实现 (13)6、系统仿真及调试 (17)6.1系统仿真 (17)6.2调试 (22)7、总结 (24)7.1设计小结 (24)7.2设计收获 (24)7.3设计改进 (25)7.4 致谢 (25)8 、参考文献 (26)1、EDA技术发展及介绍1.1EDA技术的介绍EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL ( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。
HDL 语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。
设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
eda流水课程设计一、课程目标知识目标:1. 让学生掌握EDA(电子设计自动化)的基本概念,理解其在现代电子设计领域的重要作用。
2. 学会使用EDA工具进行简单电路设计与仿真,理解电路图与印制电路板(PCB)设计的流程。
3. 了解流水线设计原理,掌握流水线技术在电子设计中的应用。
技能目标:1. 培养学生运用EDA工具进行电路设计的能力,能够独立完成简单的电路设计与仿真。
2. 提高学生的团队协作能力,学会在团队中分工合作,完成复杂的流水线项目。
3. 培养学生的问题解决能力,能够针对设计过程中遇到的问题进行分析与优化。
情感态度价值观目标:1. 培养学生对电子设计的兴趣和热情,激发学生的创新意识和探索精神。
2. 培养学生的责任心和敬业精神,认识到电子设计在国家和经济发展中的重要性。
3. 培养学生的环保意识,了解并关注电子设计对环境的影响,遵循可持续发展的原则。
课程性质:本课程为实践性较强的学科,结合理论教学与实际操作,注重培养学生的动手能力和实际应用能力。
学生特点:学生具备一定的电子基础知识,对新技术和新工具充满好奇,喜欢动手实践,但可能缺乏系统性的设计经验和团队协作能力。
教学要求:教师需结合学生特点,采用案例教学、任务驱动等方法,引导学生主动参与,注重理论与实践相结合,提高学生的综合能力。
通过分解课程目标为具体学习成果,为教学设计和评估提供依据。
二、教学内容1. EDA基本概念:介绍EDA的定义、发展历程、主要功能及其在电子设计中的应用。
教材章节:第一章 EDA技术概述2. EDA工具使用:讲解常用EDA软件的功能、界面及基本操作,如原理图绘制、PCB设计、仿真等。
教材章节:第二章 EDA工具及其应用3. 流水线设计原理:阐述流水线设计的概念、分类、原理及其在电子设计中的应用。
教材章节:第三章 流水线设计基础4. 电路设计与仿真:通过实例讲解电路原理图绘制、仿真分析及PCB设计过程。
教材章节:第四章 电路设计与仿真5. 流水线项目实践:分组进行流水线项目设计,包括需求分析、方案设计、电路设计与仿真、PCB设计等。
西安电子科技大学——电子工程学院EDA程序设计流水灯控制科 目: EDA程序设计任课老师:_________ _______________姓 名:______________ ___________学 号:__________________________班 级:_______________________流水灯设计1、引言EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。
随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
因此学好EDA技术对我们有很大的益处。
EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。
2、 实验目的1、掌握基于FPGA的开发方法2,学习使用EDA集成设计软件Quartus II,电路描述,综合,模拟过程。
3,了解基于EDA应用系统的设计方法。
4,掌握使用EDA工具设计流水灯的设计思路和设计方法三、实验题目设计能让一排灯(8只)自动改变显示的控制系统。
可将实验板上的一排发光二极管作为彩灯用。
控制器应有两种控制方式:规则变化:变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或者二个周期后替换。
彩灯变化方向有单向移动,双向移动,跳跃移动等。
随机变化:变化花样相同,但节拍及花样的转换都随机出现四、设计思路1、灯光移动用移位寄存器实现,各种花样,有的可以存于寄存器中,使用时并行置入移位寄存器,有的可以利用环形计数器或扭环计数器实现。
冯冰EDA课程设计 1 EDA课程设计 流水灯设计
姓 名: 金兼强 专 业: 电子信息工程 班 级: 093252 学 号: 09325211 同组人:黄奕林 简讯 黄树 金兼强 黄玉涛 指导老师:黄 河
2012-11-9 冯冰EDA课程设计 2 目 录
一、摘要〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 二、流水灯设计目的〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 三、流水灯设计流程〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 四、流水灯设计程序〃〃〃〃〃〃〃〃〃〃〃〃〃〃5 五、流水灯设计管脚分配〃〃〃〃〃〃〃〃〃〃7 六、功能仿真图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃8 七、原理图 波形图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃9 八、设计注意事项〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃10 九、课程设计总结〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃11 十、参考文献〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12 十一、评分表〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃 13 冯冰EDA课程设计
3 一、摘要 随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。因此学好EDA技术对我们有很大的益处。EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。 流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。 课程设计主要的目的是通过某一电路的综合设计,了解一般电路综合设计过程、设计要求、应完成的工作内容和具体的设计方法、通过设计也有助于复习、巩固以往的学习内容、达到灵活应用的目的。在设计完成后,还要将设计的电路进行安装、调试以加强学生的动手能力。在此过程中培养从事设计工作的整体观念。 课程设计应强调以能力培养为主,在独立完成设计及制作任务同时注意多方面能力的培养与提高,主要包括以下方面: ·独立工作能力和创造力。 ·综合运用专业及基础知识,解决实际工程技术问题的能力。 ·查阅图书资料、产品手册和各种工具书的能力。 ·写技术报告和编制技术资料的能力。 ·实际动手能力。 利用学到的电子技术知识,通过布置具有一定难度的设计题目,帮助学生熟悉课程设计任务和设计方法。 冯冰EDA课程设计 4 二、设计目的 1,学习使用EDA集成设计软件Quartus II,电路描述,综合,模拟过程。 2,了解基于EDA应用系统的设计方法。 3,掌握使用EDA工具设计流水灯的设计思路和设计方法 4,熟练使用Quartus II对实验程序进行改错,调试以及演示现象。。 5,帮助学生养成良好的实验习惯。 三、设计流程 (1)此次实验要求我们通过学习的EDA课程,来编制Verilog程序,以及使用这些程序代码来显示我们所要求的结果。流水灯设计是由八只LED显示灯来实现的,通过程序代码来控制这八只灯的亮灭,在实验初期,我们首先得编程序,通过我们上课所学的基础知识,再结合近段时间去图书馆查阅的有关参考书籍,以及网上所搜索的相关知识,我们小组共同完成了程序的编制,程序代码在下面有详细介绍。 (2)其次,我们需要掌握Quartus II的用法,因为要求的现象是通过这个软件实现的,在EDA实验课程中老师有详细介绍Quartus II的使用方法,所以在这一阶段对我们来说也比较得心应手,安装,调试,然后将编好的程序输入,在此过程中我们遇到了点小困难,显示程序有错误,但是通过我们集体的努力,终于发现,是因为在操作时,我们应该先创建自己的文件夹,然后统一存放在一起,而我们存放的地方有误,所以显示不出我们所输入的代码。 (3)当所有的程序输入无误后,我们要为每个器件设置管脚,因为这些在实验课上老师有说过,而且管脚号也已告诉我们,只需查询便可,所以这一阶段应该说也挺简单的。 (4)当所有的这一切准备工作做完后就是该演示现象了,这是最关键的一步,因为实验教材有限,所以不能保证我们每位同学都来演示,我们一组人中只需一个代表将我们的程序整理一下,然后演示一遍,8只LED显示灯能被控制其亮灭,会显示像流水一样的灯光。那么我们便可以通过这次的课程设计了,在此过程中,我们每个人的任务不同,我虽然没有亲手去调试,但是我也了解它的冯冰EDA课程设计 5 运作。 (5)设计报告也是我们课程设计的最后一步了,说白了就是将我们这一周所干的事情总结一下,从开始使用Verilog编程序,在Quartus II输入程序,及改正错误,调试,运行,显示现象。这所有的东西详细的说明。那么这次的课程设计就圆满结束。 四、流水灯设计程序
module light(clk,l0,l1,l2,l3,l4,l5,l6,l7); input clk; output reg l0,l1,l2,l3,l4,l5,l6,l7; reg[3:0] shu; always @(posedge clk) begin if(shu==15) shu<=0; else shu<=shu+1; case(shu) 4'b0000:begin l0=1;l1=0;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b0001:begin l0=0;l1=1;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b0010:begin l0=0;l1=0;l2=1;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b0011:begin l0=0;l1=0;l2=0;l3=1;l4=0;l5=0;l6=0;l7=0;end 冯冰EDA课程设计 6 4'b0100:begin l0=0;l1=0;l2=0;l3=0;l4=1;l5=0;l6=0;l7=0;end 4'b0101:begin l0=0;l1=0;l2=0;l3=0;l4=0;l5=1;l6=0;l7=0;end 4'b0110:begin l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=1;l7=0;end 4'b0111:begin l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=0;l7=1;end 4'b1000:begin l0=1;l1=0;l2=1;l3=0;l4=1;l5=0;l6=1;l7=0;end 4'b1001:begin l0=0;l1=1;l2=0;l3=1;l4=0;l5=1;l6=0;l7=1;end 4'b1010:begin l0=1;l1=1;l2=0;l3=0;l4=0;l5=0;l6=0;l7=0;end 4'b1011:begin l0=0;l1=0;l2=1;l3=1;l4=0;l5=0;l6=0;l7=0;end 4'b1100:begin l0=0;l1=0;l2=0;l3=0;l4=1;l5=1;l6=0;l7=0;end 4'b1101:begin l0=0;l1=0;l2=0;l3=0;l4=0;l5=0;l6=1;l7=1;end 4'b1110:begin l0=1;l1=1;l2=1;l3=1;l4=0;l5=0;l6=0;l7=0;end 冯冰EDA课程设计 7 4'b1111:begin l0=0;l1=0;l2=0;l3=0;l4=1;l5=1;l6=1;l7=1;end endcase end endmodule
五、流水灯设计管脚分配 冯冰EDA课程设计
8 六、功能仿真菜单 冯冰EDA课程设计
9 七、原理图
八、波形图 冯冰EDA课程设计
10 九、设计注意事项 在编写程序时,注意格式以及拼写是否正确,因为Quartus II要求的程序代码也是很严格的,所以没有扎实的Verilog编程基础,也很难得到所要求的程序。其次在保存程序时,我们要建立自己的文件夹来存放所编的程序,以防止运行时和其他程序的混乱导致错误。 在管脚分配这块,我们要注意查找每个器件的标号,然后准确输入进去,可以使用文本编辑工具打开QuickSOPC管脚分配.txt文件,将# Pin & Location Assignments段拷贝并替代用户QuartusII工程文件夹下的*.qsf文件中的相同段。当然,用户也可以直接在该文件中修改管脚的配置,这比在Quartus II中逐一分配管脚效率要高。当只使用部分管脚时,可以只拷贝用到的管脚分配,当然,也可以全部拷贝,没有使用的管脚不会影响设计。 冯冰EDA课程设计
11 十、课程设计总结 一个礼拜的电子设计技术(EDA)课程已经结束,在这验收学习成果的一星期内,通过对流水灯的制作,清楚地看到了自己在EDA方面知识的薄弱,各个知识点没有联会贯穿,EDA基础知识的掌握也不够牢固。 在做此课件的过程中,充分体会到了实际操作的重要性。如果没有同学的指点,可能自己会在一些地方打转弯,浪费掉很多时间。通过这次课程设计,可以很好的把各个章节的模块融合到一起,对以后的学习,设计很有帮助。经过这次的课程设计,让我感觉自己在动手操作方面有质上的飞跃。再加上前几次的课程设计所积淀下来的经验,以及老师悉心的指导,有力地指导了这次课程设计的进行,提高了这次课程设计任务的质量和速度,进一步地增强了自己完成任务的能力,巩固了所学的理论知识。完成课程设计的质量明显提高。几个人集体完成任务,必然存在弊端的,尤其体现在合作的分工不明确和对任务的消极怠工。这次课程设计要求五人一组,一个中心,但需要融入自己的思想在里面,这也在一定程度上摆脱了依赖和消极怠工的现象。使我们独立完成任务能力增强。 所有的专业课实验,以及这次的课程设计,无不有力地证明了基础知识的重要性,无不在提醒自己,要重视对基础知识的学习。通过这次的实验,理解了电子技术设计的设计方法和流程,夯实了QuartusII的操作流程。很显然,任何的实践活动,都不可能闭门造车,是必须去吸取前人的实践经验,这就要求在课程设计的过程中,从网络上,从图书馆,借寻相关资料书籍等,有力地指导课程设计。进一步认清了毕业走向。增强了搜索资料的能力。通过这次的课程设计,就直接指明了一条出路,那就是学习如何通过EDA只是设计一些器件。这就要求在最后的大学时间里,要继续夯实相关的理论知识,继续多动手操作,提高具体的实践操作能力,为即将毕业的工作出路,做好充分的准备。对这次课程设计的建议。 整个的课程设计的过程中,老师的悉心指导对我们是大有裨益的,对老师表示感谢。还有同学之间的互相帮助,也进一步增进了我们的友谊,所以说这次的课程设计真的让我获益匪浅。