EDA课程设计--多功能彩灯

  • 格式:doc
  • 大小:259.50 KB
  • 文档页数:10

第一章绪论 (2)1.1系统背景 (2)1.1.1 EDA技术的特点以及在电子技术中的应用 (2)a. EDA技术的特点: (2)b. EDA技术的发展趋势: (2)c. EDA技术的设计流程: (3)1.1.2设计内容和目标 (3)a.设计主要内容和任务: (3)b.目标: (3)第二章系统电路设计 (3)2.1 系统总体设计框架结构 (3)2.2 系统实验电路结构图NO.9 (4)2.3仿真软件总电路 (4)第三章系统软件设计 (4)3.1 系统程序设计 (4)3.1.1分频电路程序 (4)3.1.2彩灯显示程序 (5)3.2仿真波形图 (9)第四章实验结果和分析 (9)4.1 实验使用的仪器设备 (9)4.2 测试结果分析 (9)结束语 (10)第一章绪论1.1系统背景1.1.1 EDA技术的特点以及在电子技术中的应用a. EDA技术的特点:EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

电子设计自动化工程是近几年迅速发展起来的计算机软件、硬件、微电子交叉的现代电子设计学科,它是以EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以专用集成电路(ASIC)、片上系统(SOC)芯片为器件目标,以电子系统设计为应用方向的电子产品自动化设计过程[1]。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。

现代EDA技术是采用高级语言描述,具有系统级仿真和综合能力,它主要采用并行工程(Concurrent Engineering)设计和自顶向下(Top-down)设计方法,其基本思想是从系统总体要求出发,分为行为描述、寄存器传输级描述、逻辑综合三个层次,将设计内容逐步细化,最后完成整体设计,这是一种全新的设计思想与设计理念。

b. EDA技术的发展趋势:进入21世纪,全定制和定制专用集成电路正成为新的发展热点,专用集成电路的设计与应用必须依靠专门的EDA工具,因此EDA技术在功能仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的巨大的挑战。

EDA技术目前正处于高速发展阶段,每年都有新的EDA工具问世,我国EDA 技术的应用水平长期落后于发达国家,因此,广大电子工程人员应该尽早掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竞争与发展的需要。

c. EDA技术的设计流程:EDA技术是将传统的“电路设计——硬件搭试——调试焊接”模式变为“功能设计——软件模拟——编程下载”方式,设计人员只需一台微机和相应的开发工具即可研制出各种功能电路。

EDA技术将电子产品设计从软件编译、逻辑化简、逻辑综合、仿真优化、布局布线、逻辑适配、逻辑影射、编程下载、生成目标系统的全过程在计算机及其开发平台上自动处理完成。

1.1.2设计内容和目标a.设计主要内容和任务:完成EDA最小系统板设计与制作,在此基础上通过编程设计多功能彩灯设计。

b.目标:具有分频功能,可以控制彩灯闪烁频率。

例如8分频、4分频、2分频。

具有至少3路以上的彩灯花样。

按照一定的时间间隔和既定的顺序亮灭。

第二章系统电路设计2.1 系统总体设计框架结构本实验设计并制作一个基于ACEX1K ,P1K30TC144-2芯片的多功能彩灯。

系统电路结构框图如图所示。

按键1控制四选一电路,可以选择不同的时钟频率。

按错误!未找到索引项。

本次设计系统可分为控制部分和显示部分,其中,控制部分包括功能按键模块和四选一模块等,显示部分主要指LED显示模块。

这些单元电路也主要通过EDA芯片来调控其共同工作。

2.2 系统实验电路结构图NO.92.3仿真软件总电路第三章系统软件设计3.1 系统程序设计3.1.1分频电路程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fp ISport(clk_in:in std_logic;s:in std_logic_vector(3 downto 0);clk_out:out std_logic);end entity fp;architecture one of fp isSIGNAL div8clk,div4clk,div2clk:STD_LOGIC;BEGINPROCESS(CLK_IN)BEGINIF clk_in'EVENT AND clk_in='1' THENdiv2clk<=not div2clk;END IF;END PROCESS;PROCESS(div2clk)BEGINIF div2clk'EVENT AND div2clk='1' THENdiv4clk<=not div4clk;END IF;END PROCESS;PROCESS(div4clk)BEGINIF div4clk'EVENT AND div4clk='1' THENdiv8clk<=not div8clk;END IF;END PROCESS;process(clk_in)beginif s="0000" thenCLK_out<=div8clk;elsif s="0001" thenCLK_out<=div4clk;elsif s="0010" thenCLK_out<=div2clk;elsif s="0011" thenCLK_out<=clk_in;end if;end process;END ARCHITECTURE ONE;3.1.2彩灯显示程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cd1 isport(clk:in std_logic;selmode:in std_logic_vector(3 DOWNTO 0);--彩灯花样控制led:out std_logic_vector(15 downto 0));end;architecture one of cd1 isbeginprocess(clk)variable QA:std_logic_vector(5 downto 0);beginif clk'event and clk='1' thenif qa="110011" then qa:="000000";else QA:=QA+1;end if;end if;if selmode="0000" thencase QA(3 downto 0) is ---跑马灯when "0000"=>LED<="0000000000000001";when "0001"=>LED<="0000000000000010";when "0010"=>LED<="0000000000000100";when "0011"=>LED<="0000000000001000";when "0100"=>LED<="0000000000010000";when "0101"=>LED<="0000000000100000";when "0110"=>LED<="0000000001000000";when "0111"=>LED<="0000000010000000";when "1000"=>LED<="0000000100000000";when "1001"=>LED<="0000001000000000";when "1010"=>LED<="0000010000000000";when "1011"=>LED<="0000100000000000";when "1100"=>LED<="0001000000000000";when "1101"=>LED<="0010000000000000";when "1110"=>LED<="0100000000000000";when "1111"=>LED<="1000000000000000";when others=>NULL;end case;elsif selmode="0001" then --第一种彩灯花样的程序case QA(3 downto 0) iswhen "0000"=>LED<="1000000000000001";when "0001"=>LED<="1100000000000011";when "0010"=>LED<="1110000000000111";when "0011"=>LED<="1111000000001111";when "0100"=>LED<="1111100000011111";when "0101"=>LED<="1111110000111111";when "0110"=>LED<="1111111001111111";when "0111"=>LED<="1111111111111111";when "1000"=>LED<="1111111001111111";when "1001"=>LED<="1111110000111111";when "1010"=>LED<="1111100000011111";when "1011"=>LED<="1111000000001111";when "1100"=>LED<="1110000000000111";when "1101"=>LED<="1100000000000011";when "1110"=>LED<="1000000000000001";when others=>LED<="0000000000000000";end case;elsif selmode="0010" then -- 第二种彩灯花样的程序case QA(1 downto 0) iswhen "00"=>LED<="1000000110000001";when "01"=>LED<="1100001111000011";when "10"=>LED<="1110011111100111";when "11"=>LED<="1111111111111111";when others=>LED<="0000000000000000";end case;elsif selmode="0011" then --第三种彩灯花样的程序case QA(3 downto 0) iswhen "0000"=>LED<="1100000000000011";when "0001"=>LED<="0110000000000110";when "0010"=>LED<="0011000000001100";when "0011"=>LED<="0001100000011000";when "0100"=>LED<="0000110000110000";when "0101"=>LED<="0000011001100000";when "0110"=>LED<="0000001111000000";when "0111"=>LED<="0000011001100000";when "1000"=>LED<="0000110000110000";when "1001"=>LED<="0001100000011000";when "1010"=>LED<="0011000000001100";when "1011"=>LED<="0110000000000110";when "1100"=>LED<="1100000000000011";when others=>LED<="0000000000000000";end case;elsif selmode="0100" then -- 第四种彩灯花样的程序case QA(1 downto 0) iswhen "00"=>LED<="0001100000011000";when "01"=>LED<="0011110000111100";when "10"=>LED<="0111111001111110";when "11"=>LED<="1111111111111111";when others=>LED<="0000000000000000";end case;elsif selmode="0101" then --第五种彩灯花样的程序case QA iswhen "000000"=>LED<="0000000000000001";when "000001"=>LED<="0000000000000010";when "000010"=>LED<="0000000000000100";when "000011"=>LED<="0000000000001000";when "000100"=>LED<="0000000000010000";when "000101"=>LED<="0000000000100000";when "000110"=>LED<="0000000001000000";when "000111"=>LED<="0000000010000000";when "001000"=>LED<="0000000100000000";when "001001"=>LED<="0000001000000000";when "001010"=>LED<="0000010000000000";when "001011"=>LED<="0000100000000000";when "001100"=>LED<="0001000000000000";when "001101"=>LED<="0010000000000000";when "001110"=>LED<="0100000000000000";when "001111"=>LED<="1000000000000000"; when "010000"=>LED<="1000000000000001"; when "010001"=>LED<="1100000000000011"; when "010010"=>LED<="1110000000000111"; when "010011"=>LED<="1111000000001111"; when "010100"=>LED<="1111100000011111"; when "010101"=>LED<="1111110000111111"; when "010110"=>LED<="1111111001111111"; when "010111"=>LED<="1111111111111111"; when "011000"=>LED<="1111111001111111"; when "011001"=>LED<="1111110000111111"; when "011010"=>LED<="1111100000011111"; when "011011"=>LED<="1111000000001111"; when "011100"=>LED<="1110000000000111"; when "011101"=>LED<="1100000000000011"; when "011110"=>LED<="1000000000000001"; when "011111"=>LED<="1000000110000001"; when "100000"=>LED<="1100001111000011"; when "100001"=>LED<="1110011111100111"; when "100010"=>LED<="1111111111111111"; when "100011"=>LED<="1100000000000011"; when "100100"=>LED<="0110000000000110"; when "100101"=>LED<="0011000000001100"; when "100110"=>LED<="0001100000011000"; when "100111"=>LED<="0000110000110000"; when "101000"=>LED<="0000011001100000"; when "101001"=>LED<="0000001111000000"; when "101010"=>LED<="0000011001100000"; when "101011"=>LED<="0000110000110000"; when "101100"=>LED<="0001100000011000";when "101101"=>LED<="0011000000001100";when "101110"=>LED<="0110000000000110";when "101111"=>LED<="1100000000000011";when"110000"=>LED<="0001100000011000";when "110001"=>LED<="0011110000111100";when "110010"=>LED<="0111111001111110";when "110011"=>LED<="1111111111111111";when others=>LED<="0000000000000000";end case;end if;end process;end;3.2仿真波形图分频电路:彩灯显示电路:第四章实验结果和分析4.1 实验使用的仪器设备计算机,实验箱4.2 测试结果分析首先将程序调入实验箱中进行仿真,按键1切换时钟频率,按键2切换彩灯花样按键1=0: 8分频按键1=1: 4分频按键1=2: 2分频按键1=3: 不分频按键2=0: 跑马灯按键2=1:彩灯两边同时亮两个,然后逐次向中间点亮。