8路彩灯控制器课程设计设计报告

  • 格式:doc
  • 大小:170.50 KB
  • 文档页数:12

EDA 课程设计报告

课题名称:8路彩灯控制器课程设计 专业年级:电子信息科学与技术2009级 学 号: ******** 学生姓名: ******** 指导教师:*********

报告完成日期 2011 年 6 月 10日 EDA课程设计

1 第一章 绪论 1.1 系统背景 EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。 伴随着计算机、集成电路和电子设计技术的发展,EDA技术在过去的几十年里取得了巨大的进步。EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件便可完成对系统硬件功能的实现。如今,EDA软件工具已经成为电子信息类产品的支柱产业。从高性能的微处理器、数字信号处理器一直到彩电、音响和电子玩具电路等,EDA技术不单是应用于前期的计算机模拟仿真、产品调试,而且也在P哪的制作、电子设备的研制与生产、电路板的焊接、朋比的制作过程等有重要作用。可以说电子EDA技术已经成为电子工业领域不可缺少的技术支持。相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点。因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。 用VHDL 语言进行数字逻辑电路和数字系统的设计,是电子电路设计方法上的一次革命性变革。与传统设计方法相比,VHDL 描述电路行为的算法有很多优点: (1) 设计层次较高、用于较复杂的计算时,能尽早发现存在的问题,缩短设计周期; EDA课程设计 2 (2) 独立实现,修改方便,系统硬件描述能力强; (3) 可读性好,有利于交流,适合于文档保存; (4) VHDL 语言标准、规范、移植性强; (5) VHDL 类型众多而且支持用户自定义类型,支持自顶而下的设计方法和多种电路的设计。 1.2课程设计内容 本次课程设计是设计一个8路彩灯控制器,能够控制8路彩灯按照两种节拍,三种花型循环变化。两种节拍分别为0.25s和0.5s。三种花型分别是: (1)8路彩灯分成两半,从左至右顺次渐渐点亮,全亮后则全灭。 (2)从中间到两边对称地渐渐点亮,全亮后仍由中间向两边逐次熄灭。 (3)8路彩灯从左至右按次序依次点亮,全亮后逆次序依次熄灭。 设计完成后,在试验箱上进行仿真,与实验需要达到的要求进行对比,验证是否正确。 通过本次课程设计,需达到以下目的: 1.熟悉Max+plus Ⅱ软件的使用方法,使自己能更加熟练的操作. 并能熟悉使用原理图输入设计法和 VHDL 文本输入设计法进行设计,完成设计任务. 2.增强自己实际动手能力,独立解决问题的能力. 3.通过对课程设计对以前所学的知识进行更新及巩固. 第二章 系统电路设计

2.1系统总体设计框架结构

CLK 分频模块:把时钟脉冲二分频,得到另一个时钟脉冲,让这两种时钟脉冲来交替控制花型的速度。 8路彩灯的三种花型控制模块 分频模块 二选一

模块 输出 EDA课程设计

3 二选一模块:选择两种频率中的一个控制彩灯的花型。 8路彩灯的三种花型控制模块:整个系统的枢纽,显示彩灯亮的情况。 2.2 系统硬件单元电路设计 2.2.1分频模块设计 程序:library ieee; use ieee.std_logic_1164.all; entity fenpin2 is port( clk:in std_logic; clkk:out std_logic); end fenpin2; architecture behav of fenpin2 is begin process(clk) variable clkk1:std_logic:='0'; begin if clk'event and clk='1' then clkk1:= not clkk1; end if; clkk<=clkk1; end process; end behav; 仿真波形:

右上图可知,输出clkk的频率只有clk的一半,所以二分频的目的达到,程序无误。用用二分频可组成四分频和其他分频。如: 2.2.2二选一模块设计 程序:library ieee; EDA课程设计 4 use ieee.std_logic_1164.all; entity mux21 is port(a,b,s:in std_logic; y:out std_logic); end mux21; architecture behave of mux21 is begin process(a,b,s) begin if s='0' then y<=a; else y<=b; end if; end process; end behave; 仿真波形:

此模块常用,无问题。 2.2.3 8路彩灯的三种花型控制模块设计 程序: Library ieee; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; entity color8 is port(clk,rst :in std_logic; q:out std_logic_vector(7 downto 0)); end; architecture a of color8 is EDA课程设计 5 signal s:std_logic_vector(4 downto 0); begin process(s,clk) begin if rst='1' then s<="00000"; elsif clk'event and clk= '1' then if s="11111" then s<="00000"; else s<=s+1; end if; case s is when "00000"=>q<="00000000"; when "00001"=>q<="10001000"; when "00010"=>q<="11001100"; when "00011"=>q<="11101110"; when "00100"=>q<="11111111"; when "00101"=>q<="00000000"; when "00110"=>q<="00011000"; when "00111"=>q<="00111100"; when "01000"=>q<="01111110"; when "01001"=>q<="11111111"; when "01010"=>q<="11100111"; when "01011"=>q<="11000011"; when "01100"=>q<="10000001"; when "01101"=>q<="00000000"; when "01110"=>q<="10000000"; when "01111"=>q<="11000000"; when "10000"=>q<="11100000"; when "10001"=>q<="11110000"; EDA课程设计 6 when "10010"=>q<="11111000"; when "10011"=>q<="11111100"; when "10100"=>q<="11111110"; when "10101"=>q<="11111111"; when "10110"=>q<="11111110"; when "10111"=>q<="11111100"; when "11000"=>q<="11111000"; when "11001"=>q<="11110000"; when "11010"=>q<="11100000"; when "11011"=>q<="11000000"; when "11100"=>q<="10000000"; when "11101"=>q<="00000000"; when others=>null; end case; end if; end process; end; 仿真波形:

由上波形图可知,彩灯是按照三种花型变化的。此模块灵活多变,可添加更多的花型。